使用 MicroPython 实现 ESP32-CH3 扬声器播放声音

1.环境准备

烧录 MicroPython 固件

2.连接硬件

ESP32-CH3 扬声器电路
GPIO15 → 100Ω 电阻 → 10μF 电容 → 扬声器正极 ,也可以不用电阻直接连接
GND → 扬声器负极 → 电容负极

3.测试播放生日歌的旋律

复制代码
from machine import Pin, PWM
import time

# 音符频率表
tones = {
    'C4': 262, 'D4': 294, 'E4': 330, 'F4': 349,
    'G4': 392, 'A4': 440, 'B4': 494, 'C5': 523
}

# PWM初始化
pwm_pin = Pin(15)
pwm = PWM(pwm_pin)

# 生日快乐歌旋律
melody = ['C4', 'C4', 'D4', 'C4', 'F4', 'E4',
          'C4', 'C4', 'D4', 'C4', 'G4', 'F4',
          'C4', 'C4', 'C5', 'A4', 'F4', 'E4', 'D4',
          'B4', 'B4', 'A4', 'F4', 'G4', 'F4']

# 音符持续时间
durations = [2, 2, 4, 4, 4, 8] * 4  # 重复4次节奏模式

# 播放旋律
try:
    for i, note in enumerate(melody):
        if note == 'P':  # 休止符
            pwm.duty_u16(0)
        else:
            pwm.freq(tones[note])
            pwm.duty_u16(32768)  # 50%占空比
            
        # 根据持续时间播放
        time.sleep(0.5 / durations[i])
        
        # 音符间的短暂停顿
        pwm.duty_u16(0)
        time.sleep(0.05)
        
finally:
    # 确保释放PWM资源
    pwm.deinit()

运行代码后就发现扬声器发出来了声音了

相关推荐
霖001 小时前
深入讲讲异步FIFO
笔记·vscode·单片机·嵌入式硬件·学习·fpga开发
玄酒6 小时前
51单片机入门:模块化编程
单片机·嵌入式硬件·51单片机
Ronin-Lotus14 小时前
嵌入式硬件篇---ESP32稳压板
嵌入式硬件·esp32·稳压板
芯片小熊15 小时前
RTC时钟详解
单片机·嵌入式硬件·实时音视频·时钟·rtc
雨中来客17 小时前
STM32移植LVGL9.2.1教程
stm32·单片机·嵌入式硬件
不吃鱼的羊18 小时前
关于tresos Studio(EB)的MCAL配置之GPT
单片机·嵌入式硬件·gpt
CC呢19 小时前
基于单片机恒温控制系统/温度控制系统/恒温箱设计
单片机·嵌入式硬件·恒温控制·恒温箱
jingshaoqi_ccc19 小时前
stm32中优先使用原子操作的具体实现方式
stm32·单片机·嵌入式硬件
小猪写代码19 小时前
大白话畅谈:stm32中断和FreeRTOS的中断
stm32·单片机·嵌入式硬件
自激振荡器21 小时前
8,FreeRTOS时间片调度
stm32·单片机·嵌入式硬件·freertos