안녕하세요 땜블리 입니다.
라즈베리파이 피코 베이직 트레이닝 보드를 이용한 부져 제어를 진행 하겠습니다.
베이직 트레이닝 보드는 아래에서 확인이 가능합니다.
1) 부져 제어 구동 원리
(1) 동작설명
일반적으로 우리가 알고 있는 부저(Buzzer)는 피에조 부저(Piezo Buzzer)라고 하는 것입니다.
피에조 부저는 피에조 효과를 이용한 부저인데, 피에조 효과란 “수정, 세라믹과 같은 물체에 전기적인 신호를 주면 물질이 수축, 신장을 하는 효과”를 말합니다. 이러한 물체 위에 얇은 판을 붙여주면 소리가 나는 소자, 이것을 피에조 부저라고 합니다.
하지만 전기적인 신호만 준다고 해서 피에조 부저가 울리지 않습니다. 판을 떨리게 하는 신호를 만들어주어야 합니다. 주로 PWM 신호를 사용합니다. PWM 신호를 사용하여 각 음계에 맞는 주파수를 생성하여 판을 떨리게 함으로써 다양한 소리를 낼 수 있습니다.
2) 부져 구동 제어
(1) 동작설명
버튼을 누르면 부저가 울립니다.
import pwmio # 부저 사용을 하기위한 pwm 함수 가져오기
buzzer = pwmio.PWMOut(board.GP6, frequency=660, duty_cycle=0,
variable_frequency=True) # pwm 핀 설정 및 주파수 설정
buzzer.duty_cycle = 2 ** 15 # 부저 객체에 듀티비 사이클 출력
buzzer.duty_cycle = 0 # 부저 출력 0 (OFF)
(2) 소스코드
code.py
import time
import board
import digitalio
import pwmio
button = digitalio.DigitalInOut(board.GP22)
button.switch_to_input(pull=digitalio.Pull.UP)
buzzer = pwmio.PWMOut(board.GP6, frequency=660, duty_cycle=0,
variable_frequency=True)
while True:
if button.value == False:
print("You pressed the button!")
buzzer.duty_cycle = 2 ** 15
time.sleep(0.5)
buzzer.duty_cycle = 0
(3) 동작 결과
3) 멜로디 출력하기
(1) 동작설명
음계를 등록 하여 멜로디를 출력해보겠습니다.
melody = [(C4, 0.5), (D4, 0.5), (E4, 0.5), (F4, 0.5), (G4, 0.5), (A4, 0.5), (B4, 0.5), (C5, 0.5)] # 멜로디 주파수 및 출력 시간 정의
def play_music(melody_list): # 출력 함수
(2) 소스 코드
code.py
import time
import board
import digitalio
import pwmio
# 음계 주파수 값 정의
C4 = 261
D4 = 294
E4 = 329
F4 = 349
G4 = 392
A4 = 440
B4 = 493
C5 = 523
button = digitalio.DigitalInOut(board.GP22)
button.switch_to_input(pull=digitalio.Pull.UP)
buzzer = pwmio.PWMOut(board.GP6, frequency=660, duty_cycle=0,
variable_frequency=True)
# 음악 데이터 정의
melody = [(C4, 0.5), (D4, 0.5), (E4, 0.5), (F4, 0.5), (G4, 0.5), (A4, 0.5), (B4, 0.5), (C5, 0.5)]
# 음악 출력 함수 정의
def play_music(melody_list):
for note, duration in melody_list:
# 해당 음계를 지정된 시간 동안 출력
buzzer.frequency = note
buzzer.duty_cycle = 65535 // 2 # 50% duty cycle
time.sleep(duration)
# 부저 출력 정지
buzzer.duty_cycle = 0
time.sleep(0.1)
while True:
if button.value == False:
# 음악 출력
play_music(melody)
(3) 동작 결과
'라즈베리파이_피코_피코 W > circuitPython' 카테고리의 다른 글
06. Circuit 파이썬 라즈베리파이 피코 W PWM제어 (0) | 2023.03.15 |
---|---|
05. Circuit 파이썬 라즈베리파이 피코 W ADC 제어 (0) | 2023.03.14 |
03. Circuit 파이썬 라즈베리파이 피코 W 스위치 제어 (0) | 2023.03.12 |
02. Circuit 파이썬 라즈베리파이 피코 W LED제어 (0) | 2023.03.11 |
01. Circuit 파이썬 개발 환경설정 (0) | 2023.03.08 |
댓글