
Arduino 上手教程
ToughC5 蜂鸣器相关 API 与案例程序。
3.3.9M5ToughC50.2.220.2.28ToughC5 使用 M5PM1 的 PWM1 通道驱动蜂鸣器,蜂鸣器使能信号为 PM_BUZZER_EN,它连接到 M5PM1 GPIO4。
#include <M5Unified.h>
static constexpr auto BUZZER_GPIO = m5::M5PM1_Class::gpio4;
static constexpr auto BUZZER_PWM = m5::M5PM1_Class::pwm_ch1;
static void playTone(uint16_t frequency, uint16_t duration)
{
auto& pm1 = M5.Power.M5pm1;
if (!pm1.setPwmFrequency(frequency) ||
!pm1.setPwmDuty12bit(BUZZER_PWM, 2048,
m5::pwm_polarity_t::normal, true)) {
return;
}
delay(duration);
pm1.setPwmDuty12bit(BUZZER_PWM, 0, m5::pwm_polarity_t::normal, false);
delay(50);
}
void setup()
{
M5.begin();
M5.Display.setRotation(1);
M5.Display.setFont(&fonts::DejaVu24);
M5.Display.drawString("ToughC5 Buzzer", M5.Display.width() / 2,
M5.Display.height() / 2);
auto& pm1 = M5.Power.M5pm1;
if (!pm1.setGPIOFunction(BUZZER_GPIO, m5::M5PM1_Class::special)) {
M5.Display.clear();
M5.Display.println("M5PM1 setup failed");
while (true) {
delay(1000);
}
}
}
void loop()
{
playTone(880, 500);
playTone(990, 500);
playTone(1120, 500);
playTone(1180, 500);
playTone(1320, 500);
playTone(1480, 500);
playTone(1650, 500);
playTone(1760, 500);
delay(500);
}程序会依次播放一组不同频率的音调。setPwmFrequency 用于设置蜂鸣器频率,setPwmDuty12bit 用于设置 PWM 占空比和输出使能。
