当前位置:   article > 正文

MicroPython-On-ESP8266——有请蜂鸣器带来歌曲“小星星”_蜂鸣器小星星音乐编程

蜂鸣器小星星音乐编程

MicroPython-On-ESP8266——蜂鸣器

1. 蜂鸣器

蜂鸣器和喇叭都属于发声器件,区别在于蜂鸣器是有源器件,喇叭无源。有源指的是有振荡源,靠振荡源起振输出频率,再由阻抗匹配器推动压电蜂鸣片发声。

生活中常见的座机铃声、电子闹钟、玩具、空调等都是应用了蜂鸣器发声。

喇叭自不用说,没有振荡源,发声靠驱动器带动线圈运行,从而使外面一层振动膜发声,声音频率可调。

2. 使用方法

在这里插入图片描述

蜂鸣器有正负两极的接线柱,直接接到直流正负极即可发声。给不同的电压,可发出不同频率的声响。

前面在学习PWM的时候,咱们知道,开发板可通GPIO管脚,在PWM模式下输出不同的电压,那这样接线就简单了,找出支持PWM模式的GPIO管脚接蜂鸣器正极,负极接到GND端就可以了。

3. 用PWM控制发声

3.1. 频率调整和占空比

音乐国标频率中,A4是440Hz的频率,C4(钢琴的中央C)是261.626Hz,就是说使用PWM的freq=262即可得到“哆”音。
在这里插入图片描述

占空比是设置高电平的占周期内的比例,因为歌曲每个小节后面都有一个空拍,那我们就固定空拍占空比为0,其它有音节的拍占空比大一些,为1000好了。

3.2. 曲调

这个小星星是从网上找的简谱,因为里面没有连音什么的,咱们简单处理就成了,让每拍占秒时间,拍与拍之间都要有个小停顿。
在这里插入图片描述

3.3. 接线与代码

这里使用nodemcu开发板上的D7(GPIO 13)做PWM接线口,原因是它距离GND端刚好间隔两个脚,在面包板上直接把蜂鸣器两个正负极插下就对应上了,不用跳线(哈哈哈~)
在这里插入图片描述

上代码:

from machine import Pin, PWM
import utime

# 定义音调频率
tones = {'1': 262, '2': 294, '3': 330, '4': 349, '5': 392, '6': 440, '7': 494, '-': 0}
# 定义小星星旋律
melody = "1155665-4433221-5544332-5544332-1155665-4433221"

# 设置D7(GPIO 13)口为IO输出,然后通过PWM控制无缘蜂鸣器发声
beeper = PWM(Pin(13, Pin.OUT), freq=0, duty=1000)

for tone in melody:
    freq = tones[tone]
    if freq:
        beeper.init(duty=1000, freq=freq)  # 调整PWM的频率,使其发出指定的音调
    else:
        beeper.duty(0)  # 空拍时一样不上电
    # 停顿一下 (四四拍每秒两个音,每个音节中间稍微停顿一下)
    utime.sleep_ms(400)
    beeper.duty(0)  # 设备占空比为0,即不上电
    utime.sleep_ms(100)

beeper.deinit()  # 释放PWM
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/211473
推荐阅读
相关标签
  

闽ICP备14008679号