Processor

【라즈베리파이】 wiringPi Python : 부저

작성자 임베디드코리아 작성일26-02-20 00:16 조회106회 댓글0건
◆ 부저 제어를 위해 gpiozero 파이썬 모듈을 사용한다.
◆ GPIO 23으로 부저를 제어한다.

--->>> Buzzer.py  <<<------------------------------------
from time import sleep
from gpiozero import Buzzer

gn23_buzzer = Buzzer(23)

for i in range(5):
    print(i)
    gn23_buzzer.on()
    sleep(.5)
    gn23_buzzer.off()
    sleep(.5)
◆ 부저 8음계 소리내기
--->>>  Octatonic_scale.py  <<<----------------------------------
import RPi.GPIO as GPIO
import time

# GPIO 핀 설정
BUZZER_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUZZER_PIN, GPIO.OUT)

# PWM 인스턴스 생성 (주파수 100Hz로 초기화)
p = GPIO.PWM(BUZZER_PIN, 100)

# 도레미파솔라시도 주파수 (4옥타브)
scale = [262, 294, 330, 349, 392, 440, 494, 523]

# 소리내기 시작
p.start(10) # Duty Cycle 10%

try:
    for note in scale:
        p.ChangeFrequency(note) # 주파수 변경하여 음계 조절
        print(f"Playing frequency: {note}")
        time.sleep(0.5) # 0.5초 동안 소리 유지
       
finally:
    p.stop() # PWM 정지
    GPIO.cleanup() # GPIO 설정 초기화
◆ gpiozero의 TonalBuzzer 클래스를 통해 도레미파솔라시도를 출력해 본다.
◆  TonalBuzzer 클래스론 A3(라) ~ A5(라)까지 연주가 가능하다.

---->>>  TonalBuzzer.py    <<<---------------------------------------
from time import sleep
from gpiozero import TonalBuzzer

gn23_buzzer = TonalBuzzer(23)

sound = ['C4', 'D4', 'E4', 'F4', 'G4', 'A4', 'B4', 'C5']

print(gn23_buzzer.min_tone, '~', gn23_buzzer.max_tone, '\n')

for s in sound:
    print(s)
    gn23_buzzer.play(s)
    sleep(.5)

gn23_buzzer.stop()