【得捷电子Follow me第1期】+ 任务2 驱动外设->蜂鸣器->2只老虎音乐
[复制链接]
经过任务1的操作,基本可以熟悉Pico W的使用和micropython代码的运行(实时装载)。如何脱机运行(每次上电自动运行)?如何将其他外设玩起来呢?本次实验任务将详细讲解。
(1)硬件准备
将Pico W与底板(Grove Shield for Pi Pico)连接起来,可以通过以下链接下载带底板的原理图:
Grove Basic Kit for Raspberry Pi Pico | Seeed Studio Wiki
此处,需要将pico W的双排2.54mm的排针焊接,然后插入Grove底板上。Pioc W开发板的芯片朝上,且需要留意底板上的USB方向丝印提示哦!
然后,将Buzzer V1.2的扩展模块通过4pin连接线接入到Grove的A0接口,这样硬件就完成链接:
Buzzer |
Grove底板 |
备注 |
GND |
GND |
|
VCC |
VCC |
3.3V供电 |
NC |
NC |
|
SIG |
A0 |
GP26(对应picoW的引脚) |
(2)软件调试
A、链接的蜂鸣器为有源蜂鸣器,可以选择高低电平反转进行驱动蜂鸣器发声。如下示例代码将驱动蜂鸣器按照1秒鸣叫-1秒停止进行循环控制。
import machine
from machine import Pin
import utime
buzzer = machine.Pin("GP26", machine.Pin.OUT)
while True:
buzzer.on()
utime.sleep(1)
buzzer.off()
utime.sleep(1)
B、为了让蜂鸣器奏出音乐的节律,参考了一下网络上的其他资料:
stm32蜂鸣器播放音乐_蜂鸣器音乐_quote6的博客-CSDN博客
其中的原理就是:通过调节PWM的频率和占空比,代表着不同的音符。从#Do->#RE....#So,例如如下示例代码:
from machine import Pin, PWM
from time import sleep
buzzer = PWM(Pin(26))
while True:
buzzer.freq(1046) #DO
buzzer.duty_u16(1000)
sleep(1)
buzzer.freq(1175) #RE
buzzer.duty_u16(1000)
sleep(1)
buzzer.freq(1318) #MI
buzzer.duty_u16(1000)
sleep(1)
buzzer.freq(1397) #FA
buzzer.duty_u16(1000)
sleep(1)
buzzer.freq(1568) #SO
buzzer.duty_u16(1000)
sleep(1)
buzzer.freq(1760) #LA
buzzer.duty_u16(1000)
sleep(1)
buzzer.freq(1967) #SI
buzzer.duty_u16(1000)
sleep(1)
(3)调试实验
经过前面的实验,我们基本可以把音符奏出,此时,将音符组合起来,就有了如下“2只老虎”音乐声调了!
from machine import Pin, I2C, ADC, PWM
from time import sleep
buzzer = PWM(Pin(26))
vol = 1000
def DO(time):
buzzer.freq(1046) #1
buzzer.duty_u16(vol)
sleep(time)
def RE(time):
buzzer.freq(1175) #2
buzzer.duty_u16(vol)
sleep(time)
def MI(time):
buzzer.freq(1318) #3
buzzer.duty_u16(vol)
sleep(time)
def FA(time):
buzzer.freq(1397) #4
buzzer.duty_u16(vol)
sleep(time)
def SO(time):
buzzer.freq(1568) #5
buzzer.duty_u16(vol)
sleep(time)
def LA(time):
buzzer.freq(1760) #6
buzzer.duty_u16(vol)
sleep(time)
def SI(time):
buzzer.freq(1967) #7
buzzer.duty_u16(vol)
sleep(time)
def N(time):
buzzer.duty_u16(0) #close
sleep(time)
while True:
DO(0.25)
RE(0.25)
MI(0.25)
DO(0.25)
N(0.01)
DO(0.25)
RE(0.25)
MI(0.25)
DO(0.25)
MI(0.25)
FA(0.25)
SO(0.5)
MI(0.25)
FA(0.25)
SO(0.5)
N(0.01)
SO(0.125)
LA(0.125)
SO(0.125)
FA(0.125)
MI(0.25)
DO(0.25)
SO(0.125)
LA(0.125)
SO(0.125)
FA(0.125)
MI(0.25)
DO(0.25)
RE(0.25)
SO(0.25)
DO(0.5)
N(0.01)
RE(0.25)
SO(0.25)
DO(0.5)
(4)注意事项
A、硬件搭建时候,需要留意Grove底板的焊接和连线,物理硬件需要正确,才能确保后面的代码运行效果;
B、如果希望制作其他的音律的歌曲,可以用其他音符转换器生成乐谱替换即可。
|