【雕爷学编程】MicroPython动手做(19)——掌控板之蜂鸣器与音乐

知识点:什么是掌控板?
掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

掌控板硬件特性:
ESP-32主控
处理器:Tensilica LX6双核处理器(一核处理高速连接;一核独立应用开发)
主频:高达240MHz的时钟频率
SRAM:520KB
Flash:8MB
Wi-Fi标准:FCC/CE/TELEC/KCC
Wi-Fi协议:802.11 b/g/n/d/e/i/k/r (802.11n,速度高达150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防护间隔
频率范围:2.4~2.5 GHz
蓝牙协议:符合蓝牙v4.2 BR/EDR和BLE标准
蓝牙音频:CVSD和SBC音频低功耗:10uA
供电方式:Micro USB供电
工作电压:3.3V
最大工作电流:200mA
最大负载电流:1000mA
掌控板载
三轴加速度计MSA300,测量范围:±2/4/8/16G
地磁传感器MMC5983MA,测量范围:±8 Gauss;精度0.4mGz,电子罗盘误差±0.5°
光线传感器
麦克风
3 颗全彩ws2812灯珠
1.3英寸OLED显示屏,支持16*16字符显示,分辨率128x64
无源蜂鸣器
支持2个物理按键(A/B)、6个触摸按键
支持1路鳄鱼夹接口,可方便接入各种阻性传感器
拓展接口
20通道数字I/O, (其中支持12路PWM,6路触摸输入)
5通道12bit模拟输入ADC,P0~P4
1路的外部输入鳄鱼夹接口:EXT/GND
支持I2C、UART、SPI通讯协议

在这里插入图片描述
在这里插入图片描述
掌控板板载无源蜂鸣器
其声音主要是通过高低不同的脉冲信号来控制而产生。声音频率可控,频率不同,发出的音调就不一样,从而可以发出不同的声音,还可以做出“Do、Re、Mi、Fa、So、La、Si”的效果。

在这里插入图片描述

1、蜂鸣器
是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。

电压式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出100500HZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
在这里插入图片描述
2、有源蜂鸣器和无源蜂鸣器
有源蜂鸣器直接接上额定电源(新的蜂鸣器在标签上都有注明)就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。有源蜂鸣器与无源蜂鸣器的区别:这里的“源”不是指电源,而是指震荡源。

也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。有源蜂鸣器的优点是:程序控制方便。

而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K-5K的方波去驱动它。无源蜂鸣器的优点是:

  1. 便宜
  2. 声音频率可控,可以做出“多来米发索拉西”的效果
  3. 在一些特例中,可以和LED复用一个控制口

在这里插入图片描述

3、最简单的警报器

#MicroPython动手做(19)——掌控板之蜂鸣器与音乐
#最简单的警报器

from mpython import *

import music

import time
while True:
    music.pitch(784, 500)
    time.sleep_ms(100)

mPython 图形编程
在这里插入图片描述
4、光电火灾报警器

#MicroPython动手做(19)——掌控板之蜂鸣器与音乐
#光电火灾报警器

from mpython import *

import time

import music
while True:
    if light.read() > 3000:
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        oled.fill(0)
        oled.DispChar('火警! 火警!', 35, 22, 1)
        oled.show()
        music.pitch(698, 500)
        music.pitch(988, 500)
    else:
        rgb.fill((int(0), int(153), int(0)))
        rgb.write()
        time.sleep_ms(1)
        oled.fill(0)
        oled.DispChar('小心火烛!', 38, 22, 1)
        oled.show()
        music.stop()

mPython 图形编程
在这里插入图片描述
在这里插入图片描述

5、持续变调警笛声(磁感应触发)

#MicroPython动手做(19)——掌控板之蜂鸣器与音乐
#持续变调警笛声(磁感应触发)

from mpython import *

import time

import music
while True:
    oled.fill(0)
    oled.DispChar('磁力报警', 0, 0, 1)
    oled.DispChar((str(magnetic.get_field_strength())), 0, 16, 1)
    oled.show()
    magnetic.peeling()
    if magnetic.get_field_strength() > 3:
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        for freq in range(880, 1760, 16):
            music.pitch(freq, 50)
        for freq in range(1760, 880, 16):
            music.pitch(freq, 50)
    else:
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)
        rgb[1] = (int(0), int(153), int(0))
        rgb.write()
        time.sleep_ms(1)
        music.stop()

可以通过频率设置来制作一些非音符的音调。 例如,创建警笛效果。使用 music.pitch 方法,它需要一个频率。 其中range函数用于生成数值范围。这些数字用于定义音调的高低。 range函数有三个参数,分别是起始值,结束值和步长。因此,range的第一次使用是“以16的步长创建880到1760之间的数字范围”; 第二个次是“以-16”的步长创建1760到880之间的一系列值,持续频率为50毫秒。因此获得像警报器一样在频率上升和下降的频率范围而制作出警笛效果。

mPython 图形编程
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MicroPython是一种精简版的Python编程语言,专为微型控制器和嵌入式系统设计的。对于蜂鸣器音乐播放代码,可以使用MicroPython来实现。 蜂鸣器是一种可以产生声音的电子元件,通常用于嵌入式系统,如Arduino、树莓派等。蜂鸣器有一个控制引脚,可以通过改变引脚的电平来产生不同的音调。 要在MicroPython中实现蜂鸣器音乐播放,我们需要通过GPIO库来控制蜂鸣器引脚的电平。以下是一个简单的示例代码: ```python from machine import Pin import time # 定义蜂鸣器引脚 buzzer_pin = Pin(12, Pin.OUT) # 定义乐谱 music = [ ['C4', 1], ['D4', 1], ['E4', 1], ['F4', 1], ['G4', 1], ['A4', 1], ['B4', 1], ['C5', 1] ] # 定义音符频率 freqs = { 'C4': 262, 'D4': 294, 'E4': 330, 'F4': 349, 'G4': 392, 'A4': 440, 'B4': 494, 'C5': 523 } # 定义播放函数 def play_note(note, duration): buzzer_pin.on() freq = freqs[note] time.sleep(duration) buzzer_pin.off() time.sleep(0.05) # 间隔一段时间 # 播放乐谱 for note, duration in music: play_note(note, duration) ``` 在这个示例代码中,我们首先定义了蜂鸣器引脚为Pin(12, Pin.OUT),然后定义了一个乐谱,每个音符的名称和持续时间。接下来,我们定义了一个音符频率的字典,将音符名称映射到对应的频率。最后,定义了一个播放音符的函数play_note,其中根据音符名称从频率字典中获取对应的频率,然后控制蜂鸣器引脚的电平来产生对应的音调。 在主程序中,我们使用一个for循环来遍历乐谱中的每个音符,并调用play_note函数来播放音符。这样就可以实现蜂鸣器音乐播放了。 请注意,具体的蜂鸣器引脚和音符频率可能根据实际硬件情况略有不同,需要根据实际情况进行调整。另外,上述示例代码只是一个简单的演示,可以根据自己的需求做出更复杂的蜂鸣器音乐播放程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值