ちょっと乱暴な方法でしたが、digitalWriteでのLEDでの出力は散々試してみました。
他のサイトでは、ちゃんと抵抗をつけて電流計算をしたり、電気的なことをちゃんと書かれていたりするところからすると、あまりにもゆるい感じで申し訳あrませんが、ほぼこれでLEDへの出力は理解できたのではないでしょうか?
専門的に理解されたい場合は、ほかのばっちり書かれたサイトでもう一度おさらいをしてください。
ArduinoでBeep音(Buzzer)を鳴らしてみる
Arduinoのマイコンからの出力の一つとして、実に便利な簡単にブザー音を鳴らすことができる命令があります。しかも、音程なども簡単に変えられるので音楽を演奏することもできます。
※ただし単音ですが…
Buzzer音を鳴らすために必要なモノ
音を鳴らすわけなの、当然スピーカーが必要なのですが、Arduinoのポートに直接スピーカーをさしても残念ながら出力が足りなくて音がなりません。
ですので、省電力でもブ~ブ~ピ~ピ~なってくれる「圧電ブザー」というものを用意します。
こんな感じで強引に突き刺しました
大好きセットのブザーはこんな形をしていたので、またまた強引にArduinoのコネクタに突き刺してみました(笑)… 片方の足はGNDに片方の足は11番へしっかりと突き刺します。
ArduinoでBuzzer音を鳴らしてみます
ArduinoのBuzzer音制御関数は tone という関数(命令)を使います。
命令は単純に鳴らしたい場面で tone(突き刺したピン,音の高さ,長さ)で支持するのですが、、音の高さは周波数、長さはミリ秒です。
ただ、長さは noTone(突き刺したピン)の命令を出さない限り止まらないので、基本は自分でdelayを使って制御します。
とりあえずラ~を1秒鳴らして終わる
void setup() { } void loop() { tone(11,440); //ラ~(440Hz) delay(1000); //1秒間まつ noTone(11); //音止める while(1){} //ループするとうるさいのでプログラムを強制的にループさせない }
ピンの出力設定は何もいらず、いきなり鳴らせます。
1オクターブ変える
void setup() { } void loop() { tone(11,440); //ラ~(440Hz) delay(1000); //1秒間まつ tone(11,880); //ラ~(880Hz) delay(1000); //1秒間まつ noTone(11); //音止める while(1){} //ループするとうるさいのでプログラムを強制的にループさせない }
音がつながらないようになっている時間を短くする
void setup() { } void loop() { tone(11,440,500); //ラ~(440Hz) delay(1000); //1秒間まつ tone(11,880,500); //ラ~(880Hz) delay(1000); //1秒間まつ noTone(11); //音止める while(1){} //ループするとうるさいのでプログラムを強制的にループさせない }
Sample
面白いサンプルが落ちていました。
一度試してみてください。