콘텐츠로 이동

버튼 누르면 소리 나게 하기

🎯 이 장에서 배우는 것

  • [ ] 버튼을 누르면 소리가 나는 프로그램을 만들 수 있다
  • [ ] LED와 부저를 동시에 제어할 수 있다

📚 핵심 개념

개념: 입력과 출력 연결하기

버튼(입력)과 부저(출력)를 연결하는 건 마치 초인종과 같아요. 버튼을 누르면 "딩동~" 소리가 나고, 손을 떼면 소리가 멈추죠!

flowchart LR A[🔘 버튼 누름] --> B{if 눌림?} B -->|Yes| C[🔊 소리 ON] B -->|No| D[🔇 소리 OFF]

핵심 로직: 버튼 상태를 읽고 → 그에 따라 부저를 제어한다!


🔨 따라하기

Step 1: 버튼으로 부저 제어하기

코드:

from picozero import Speaker, Button
from time import sleep

speaker = Speaker(15)  # 부저: GP15
button = Button(14)    # 버튼: GP14

while True:
    if button.is_pressed:
        speaker.on()   # 버튼 누르면 소리
    else:
        speaker.off()  # 떼면 멈춤
    sleep(0.01)

실행 결과: 버튼을 누르는 동안만 "삐~" 소리가 납니다!


Step 2: LED도 함께 켜기

코드:

from picozero import Speaker, Button, LED
from time import sleep

speaker = Speaker(15)
button = Button(14)
led = LED(16)          # LED 추가!

while True:
    if button.is_pressed:
        speaker.on()
        led.on()       # 소리 + 빛
    else:
        speaker.off()
        led.off()
    sleep(0.01)

실행 결과: 버튼을 누르면 빛도 나고 소리도 나는 장치 완성! 🎉


📝 전체 코드

from picozero import Speaker, Button, LED
from time import sleep

speaker = Speaker(15)
button = Button(14)
led = LED(16)

while True:
    if button.is_pressed:
        speaker.on()
        led.on()
    else:
        speaker.off()
        led.off()
    sleep(0.01)

⚠️ 주의할 점

  1. sleep(0.01) 꼭 넣기: 없으면 피코가 너무 빠르게 반복해서 문제가 생길 수 있어요
  2. 부저가 안 울리면: GP15 핀 연결과 GND 확인!

✅ 점검하기

  1. 버튼을 누르는 동안만 소리가 나게 하려면 어떤 조건을 사용하나요?
정답 확인if button.is_pressed: 조건문 사용
  1. LED와 부저를 동시에 켜려면 어떻게 하나요?
정답 확인같은 if문 안에 speaker.on()led.on()을 함께 작성

🔗 다음 장 미리보기

다음 장에서는 버튼으로 다양한 음을 연주해봅니다. 도레미 피아노를 만들어볼까요? 🎹