XIAO ESP32C3を使ってみる③〜PWMでBeep編

XIAO ESP32C3を使ってみる記事。

kana-yaz.hatenablog.jp
kana-yaz.hatenablog.jp

Beep音を鳴らしてみる

予定しているアプリケーションで使いたいので、PWMを使ってBeep音を鳴らしてみます。
従来のESP32だとESP8266Audioと内蔵DACトランジスタあたりの組み合わせをよく使っていたのですが、ESP32C3はDACを内蔵していないですので
、PWMを使ったBeepで簡易に済ませちゃいます。

回路


muRataの圧電サウンダ「PKM13EPYH4000-A0」を使います。
Lチカと同じくD10ピンに雑な感じで接続。

https://files.seeedstudio.com/wiki/XIAO_WiFi/pin_map-2.png
Seeedより引用

コード

#define BUZZ_PIN D0   // ブザーのピン番号
#define BUZZ_CH 0 // ブザーのチャネル番号

#define BEAT 500      // 音の長さ(0.5秒間隔)

void setup() {

  delay(BEAT*4); //ちょっとディレイ
  
  ledcSetup(BUZZ_CH, 12000, 8);     //ledcの初期化
  ledcAttachPin(BUZZ_PIN, BUZZ_CH); //ピンの初期化

  ledcWriteTone(BUZZ_CH, 262); // ド
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 294); // レ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 330); // ミ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 349); // ファ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 392); // ソ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 440); // ラ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 494); // シ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 523); // ド
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 587); // レ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 659); // ミ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 698); // ファ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 784); // ソ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 880); // ラ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 988); // シ
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 1049); // ド
  delay(BEAT);
  ledcWriteTone(BUZZ_CH, 0);    // 消音
}
void loop()
{
}

結果

ヨシ!

www.youtube.com