入坑树莓派-06-蜂鸣器

入坑树莓派-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的采样率代表了震动频率变化的快慢,变化越快,音乐听起来越细腻,音频质量越高

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注