Arduino入門

2. デバイス&サンプル

5. 拡張モジュール&サンプル

アクセサリー

6. アプリケーション

ToughC5 ブザー

ToughC5 のブザー関連 API とサンプルプログラムです。

サンプルプログラム

コンパイル要件

  • M5Stack ボードマネージャーのバージョン >= 3.3.9
  • 開発ボードの選択 = M5ToughC5
  • M5Unified ライブラリのバージョン >= 0.2.22
  • M5GFX ライブラリのバージョン >= 0.2.28

ToughC5 は M5PM1 の PWM1 チャネルでブザーを駆動します。ブザーのイネーブル信号 PM_BUZZER_EN は M5PM1 GPIO4 に接続されています。

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#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 のデューティ比を設定して出力を有効にします。

Page Tools
PDF
On This Page