XIAO ESP32C3を使ってみる③〜PWMでBeep編
XIAO ESP32C3を使ってみる記事。
Beep音を鳴らしてみる
予定しているアプリケーションで使いたいので、PWMを使ってBeep音を鳴らしてみます。
従来のESP32だと”ESP8266Audio”と内蔵DAC、トランジスタあたりの組み合わせをよく使っていたのですが、ESP32C3はDACを内蔵していないですので
、PWMを使ったBeepで簡易に済ませちゃいます。
コード
#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