
Arduino Quick Start
ToughC5 buzzer APIs and example program.
3.3.9M5ToughC50.2.220.2.28ToughC5 uses the PWM1 channel of M5PM1 to drive the buzzer. The buzzer enable signal, PM_BUZZER_EN, is connected to 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);
}The program plays a series of tones at different frequencies. setPwmFrequency sets the buzzer frequency, while setPwmDuty12bit sets the PWM duty cycle and enables the output.
