【得捷电子Follow me第3期】任务3:控制蜂鸣器播放音乐
[复制链接]
【得捷电子Follow me第3期】任务3:控制蜂鸣器播放音乐
任务3:控制蜂鸣器播放音乐(必做任务)
使用Seeed Studio XIAO ESP32C3控制蜂鸣器发出不同频率的声音,并播放一段音乐
搭配器件:Seeed Studio XIAO ESP32C3、Seeed Studio Expansion Board Base for XIAO
操作过程:
1.蜂鸣器播放音乐简单原理。
大家都知道,声音源于震动,SEEED的扩展板上集成了一颗压电蜂鸣器,可以把电信号转换成相应频率的震动。
2.确定引脚。
查看扩展板引脚图,得知蜂鸣器buzzer的引脚是A3,再结合XIAO C3的引脚图得知使用的引脚是GPIO5。
3.初始化PWM引脚。
引用PWM库,初始化频率为440hz。
from machine import PWM,Pin
beep = PWM(Pin(5),freq=440,duty=500)
点击运行,我们就可以听到持续的蜂鸣器的响声。
4.播放音乐。
从网上寻找一个同年经典游戏超级玛丽的音乐,移植到我们的XIAO C3上面,废话不多说,直接贴代码。
from machine import PWM,Pin
import time
import _thread
beep = PWM(Pin(5),freq=50000,duty=500)
#cdefgab
s2 = [50000,262 ,294, 330 ,349 ,392 ,220 ,247 ]
s3 = [50000,523,587,659,698,784,440,494]
s4 = [50000,1044, 1175 ,1318, 1397 ,1568 ,880 ,988]
def play(level,power = 1,deltatime = 200):
if power == 0:
beep.freq(s2[level])
elif power == 1:
beep.freq(s3[level])
elif power == 2:
beep.freq(s4[level])
time.sleep_ms(deltatime)
beep.freq(50000)
def plays(l):
for i in l:
if len(i) == 3:
play(i[0],i[1],i[2])
else:
play(i[0],i[1])
def test():
plays([(3,2),(3,2),(0,2),(3,2),(0,2),(1,2),(3,2),(0,2),(5,2),(0,2,500)])
plays([(1,2,600),(5,1,600),(3,1,600),(6,1,400),(7,1,400),(7,1),(6,1,400)])
plays([(5,1),(3,2,400),(5,2),(6,2,400),(4,2),(5,2,400),(3,2,400),(1,2),(2,2),(7,1)])
plays([(1,2,600),(5,1,600),(3,1,600),(6,1,400),(7,1,400),(7,1),(6,1,400)])
plays([(5,1),(3,2,400),(5,2),(6,2,400),(4,2),(5,2,400),(3,2,400),(1,2),(2,2),(7,1)])
_thread.start_new_thread(test,())
f8fb34c8c2624e8fe6c6b321aac02b1f
|