
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 のデューティ比を設定して出力を有効にします。
