콘텐츠로 이동

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)

⚠️ 주의할 점

  1. 소리가 안 나요duty_u16(30000) 값 확인
  2. 연주 후 소리 끄기 → 마지막에 buzzer.duty_u16(0) 필수!

✅ 점검하기

  1. 주파수 262Hz는 무슨 음인가요?
정답 확인도(C) 음입니다
  1. 소리를 끄려면 어떻게 하나요?
정답 확인buzzer.duty_u16(0)
  1. 더 높은 음을 내려면 주파수를?
정답 확인더 크게 설정합니다

🚀 다음 장 미리보기

다음 장에서는 버튼과 부저를 함께 사용해서 피아노를 만들어볼 거예요! 🎹