Wemos D1 mini Micropython编程(Thonny)03——音乐播放

Wemos D1 mini Micropython编程(Thonny)03——音乐播放


前言

MicroPython编程实现字母歌播放。


一、材料

Wemos D1 mini一块、面包板一块、蜂鸣器一个、杜邦线若干。

二、连线

连线如图:
在这里插入图片描述

三、代码

呼吸灯代码如下(示例):

from machine import Pin, PWM
import time

beeper = PWM(Pin(2, Pin.OUT)) # 使用 2--D4管脚控制蜂鸣器
#|1 1 5 5|6 6 5 -|4 4 3 3|2 2 1 -|
# 5 5 4 4|3 3 2 -|5 5 4 4|3 3 2 -|
# 1 1 5 5|6 6 3 -|4 4 3 3|2 2 1 -|
# 0 表示休止符
                                 
tones = {                        # 音名的频率——字典
    '1': 262,                    # Do
    '2': 294,                    # Re
    '3': 330,                    # Mi
    '4': 349,                    # Fa
    '5': 392,                    # So
    '6': 440,                    # La
    '7': 494,                    # Si
}

music="115566504433221055443320554433201155663044332210"

while True:# 持续播放
    for i in range(0,len(music)):  
        if music[i] == "1":           #如果字符串中第i个字符为'1'
            beeper.duty(512)         # 设定一半音量
            beeper.freq(tones['1'])  # 设定 Do 的频率
            
        elif music[i] == "2":         #如果字符串中第i个字符为'2'
            beeper.duty(512)         # 設定一半音量
            beeper.freq(tones['2'])  # 設定 Re 的频率
                                     
        elif music[i] == "3":         #如果字符串中第i个字符为'3'   
            beeper.duty(512)         # 设定一半音量
            beeper.freq(tones['3'])  # 设定 Mi 的频率
                                     
        elif music[i] == "4":         #如果字符串中第i个字符为'4'   
            beeper.duty(512)         # 设定一半音量
            beeper.freq(tones['4'])  # 设定 Fa 的频率
                                     
        elif music[i] == "5":         #如果字符串中第i个字符为'5'  
            beeper.duty(512)         # 设定一半音量
            beeper.freq(tones['5'])  # 设定 So 的頻率
                                     
        elif music[i] == "6":         #如果字符串中第i个字符为'6'   
            beeper.duty(512)         # 设定一半音量
            beeper.freq(tones['6'])  # 设定 La 的頻率
                                     
        elif music[i] == "7":         #如果字符串中第i个字符为'7'
            beeper.duty(512)         # 设定一半音量
            beeper.freq(tones['7'])  # 设定 Si 的頻率
                                     
        else:                        #如果字符串中第i个字符为'0'
            beeper.duty(0)           # 设定不发声

        time.sleep(0.2)       # 声音持续 0.2秒
        beeper.duty(0)        # 停止
        time.sleep(0.1)       # 持续无声 0.1

四、PWM

PWM(脉宽调制)是一种常用的模拟控制方式,它通过不断改变电路输出的占空比来模拟更精确的控制。
PWM控制的基本原理:
1、占空比(Duty Cycle):占空比是指一段电路中,控制信号开启有效时间占整段电路时间的比例。
在这里插入图片描述

2、脉宽调制:即根据要控制的电器,改变比例占空比,来模拟出不同强度的电流。
3、工频周期:用于控制PWM波形的工作频率,基本上是指PWM的脉冲调制频率。
本实例中利用D4脚的PWM输出模式,可以输出各音符的频率和音量,得到不同的声音。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值