入坑树莓派-06-蜂鸣器
蜂鸣器指的是这个(这个模块在屏幕下面):
运行下面的代码可以让这个蜂鸣器播放《两只老虎》:
import RPi.GPIO as GPIO
import time
Buzzer = 22
F = [0, 262, 294, 330, 350, 393, 441, 495] # 音符对应震动频率
song = [ F[1], F[2], F[3], F[1], F[1], F[2], F[3], F[1], F[3], F[4], F[5], F[3], F[4], F[5], ]
beat = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, ]
def setup():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Buzzer, GPIO.OUT)
global Buzz
Buzz = GPIO.PWM(Buzzer, 440)
Buzz.start(50)
def loop():
while True:
for i in range(1, len(song)):
Buzz.ChangeFrequency(song[i]) # 改变蜂鸣器频率
time.sleep(beat[i] * 0.2) # 每0.2秒切换下一个音符
def destory():
Buzz.stop()
GPIO.output(Buzzer, 1)
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
loop()
except KeyboardInterrupt:
destory()
这段代码有助于我们了解一些原理:
- 蜂鸣器(扬声器)发声原理:播放器发出电信号,控制扬声器元件按照指定频率震动,即可发出指定的声音
- 数字音乐(如mp3)原理:
- mp3文件存储了震动频率的信息,播放器读取其中的信息,将其转换成控制扬声器的电信号
- mp3的采样率代表了震动频率变化的快慢,变化越快,音乐听起来越细腻,音频质量越高