Chapter 07: 부저로 소리 만들기¶
🎯 이 장에서 배우는 것¶
- [ ] 부저를 연결하고 소리를 낼 수 있다
- [ ] 주파수로 음계를 만들 수 있다
- [ ] 간단한 멜로디를 연주할 수 있다
⏱️ 예상 학습 시간: 약 45분
📚 핵심 개념¶
개념: 주파수와 소리¶
비유로 시작해요!
"주파수는 마치 기타 줄의 떨림과 같아요. 줄을 세게 조이면(주파수 높음) 높은 소리, 느슨하면(주파수 낮음) 낮은 소리가 나요."
정확한 정의: - 주파수(Hz): 1초에 진동하는 횟수 - 숫자가 클수록 높은 음
음계별 주파수:
| 음계 | 도 | 레 | 미 | 파 | 솔 | 라 | 시 |
|---|---|---|---|---|---|---|---|
| Hz | 262 | 294 | 330 | 349 | 392 | 440 | 494 |
🔨 따라하기¶
Step 1: 부저 연결하기¶
Grove 부저를 GP16 포트에 연결하세요.
flowchart LR
A[🔌 부저] --> B[GP16 포트]
B --> C[🎵 소리 출력]
Step 2: 소리 내기¶
코드:
from machine import Pin, PWM
import time
# 부저 설정
buzzer = PWM(Pin(16))
# '도' 소리 내기
buzzer.freq(262) # 주파수 설정
buzzer.duty_u16(30000) # 소리 켜기
time.sleep(0.5)
buzzer.duty_u16(0) # 소리 끄기
실행 결과:
🎵 "도~" 소리가 0.5초간 납니다
💡 잠깐!
freq()숫자를 바꾸면 음이 달라져요!
Step 3: 멜로디 연주하기¶
'학교종' 앞부분을 연주해요!
from machine import Pin, PWM
import time
buzzer = PWM(Pin(16))
# 음계 정의
notes = {
'C': 262, 'D': 294, 'E': 330,
'F': 349, 'G': 392
}
# 학교종: 솔솔라라 솔솔미
melody = ['G', 'G', 'A', 'A', 'G', 'G', 'E']
def play(note, duration=0.3):
buzzer.freq(notes[note])
buzzer.duty_u16(30000)
time.sleep(duration)
buzzer.duty_u16(0)
time.sleep(0.05)
# 연주!
for note in melody:
play(note)
✅ 체크포인트: "솔솔라라 솔솔미~" 멜로디가 들리면 성공!
📝 전체 코드¶
from machine import Pin, PWM
import time
buzzer = PWM(Pin(16))
notes = {'C': 262, 'D': 294, 'E': 330, 'F': 349, 'G': 392, 'A': 440}
melody = ['G', 'G', 'A', 'A', 'G', 'G', 'E']
def play(note, duration=0.3):
buzzer.freq(notes[note])
buzzer.duty_u16(30000)
time.sleep(duration)
buzzer.duty_u16(0)
time.sleep(0.05)
for note in melody:
play(note)
⚠️ 주의할 점¶
- 소리가 안 나요 →
duty_u16(30000)값 확인 - 연주 후 소리 끄기 → 마지막에
buzzer.duty_u16(0)필수!
✅ 점검하기¶
- 주파수 262Hz는 무슨 음인가요?
정답 확인
도(C) 음입니다- 소리를 끄려면 어떻게 하나요?
정답 확인
buzzer.duty_u16(0)- 더 높은 음을 내려면 주파수를?
정답 확인
더 크게 설정합니다🚀 다음 장 미리보기¶
다음 장에서는 버튼과 부저를 함께 사용해서 피아노를 만들어볼 거예요! 🎹