09_Speaker
スピーカーでドレミを鳴らす
スピーカーから「ド・レ・ミ」の音を順番に鳴らします。
準備する
CherryIoTとモジュールを接続する
CherryIoTの指定コネクタに以下のモジュールを接続し、CherryIoTをPCのUSB-A挿入口に接続します。
スピーカーモジュール
接続先:A
サンプルコード
GitHubで公開しているサンプルコードです。コードをコピーして Arduino IDEで使用します。
GitHubからコードを読み込んでいます...プログラムを書き込む
上のサンプルコードをコピーし、Arduino IDEに貼りつけます。
ボードとポートの設定を確認し、左上の 「→(書き込みボタン)」を押してCherryIoTに書き込みます。
初めて書き込む方は「はじめてのCherryIoT」で詳しい手順を確認してください。
動作確認
スピーカーから「ド・レ・ミ」が順番に聞こえるなら成功です。
コードの解説
音階ごとの周波数を定義し、ledcWriteToneで音を順番に出力します。
GitHubからコードを読み込んでいます...const int spkrPin = 3;コネクタAのスピーカーに対応するGPIO3を、定数spkrPinへ保存します。
#define DO 261.6「ド」の音に対応する周波数261.6Hzを、DOという名前で定義します。周波数は1秒間に振動する回数で、値が大きいほど高い音になります。
#define _DO 277.18半音高い「ド」に対応する周波数277.18Hzを、_DOという名前で定義します。以降のREからoctDOまでの定義も、それぞれの音階に対応する周波数へ名前を付けています。
void playmusic(){「ド・レ・ミ」を鳴らす一連の処理を、playmusicという関数にまとめます。関数にまとめると、関数名を書くことで同じ処理を呼び出せます。
ledcWriteTone(spkrPin, DO);spkrPinからDOの周波数を出力し、スピーカーで「ド」を鳴らします。ledcWriteToneは、指定した端子から指定した周波数の音を出す命令です。
delay(250);0.25秒待ちます。
ledcWriteTone(spkrPin, RE);spkrPinからREの周波数を出力し、「レ」を鳴らします。
delay(250);0.25秒待ちます。
ledcWriteTone(spkrPin, MI);spkrPinからMIの周波数を出力し、「ミ」を鳴らします。
delay(250);0.25秒待ちます。
ledcWriteTone(spkrPin, 0);出力する周波数を0にし、スピーカーの音を止めます。
delay(250);0.25秒待ちます。
void setup() {setup関数は電源を入れたときやリセットしたときに1回だけ実行されます。ここでスピーカー端子と音を出すためのPWMを設定します。
pinMode(spkrPin, OUTPUT);スピーカーへ信号を送れるように、spkrPinをOUTPUT(出力)に設定します。
ledcAttach(spkrPin, 12000, 8);spkrPinへ、最大周波数12000Hz、8ビットのPWM出力を割り当てます。PWMは端子を高速でON・OFFして出力を制御する方法で、ここでは指定した周波数の音を作るために使います。
void loop() {loop関数は繰り返し実行されます。playmusic関数でド・レ・ミを鳴らし、3秒待ってから再び再生します。
playmusic();作成したplaymusic関数を呼び出し、「ド・レ・ミ」を順番に再生します。
delay(3000);3秒待ちます。