ステップ3:3分経ったらブザーで通知するよう改造
ステップ2でかなりタイマーらしいものになってきましたが、LEDを見ていないと、いつカウントダウンが終わったのかわからないというのは不便です。そこでもう少し改造して、カウントダウンが終わったらブザーを鳴らすようにしてみましょう。今回使うブザーは、電圧をかけると「ビー」と鳴るだけのシンプルなものです。
まずはハードの改造です。ステップ2のスイッチとほぼ同じで、ブザーを7番ピンとGNDとに接続します。
続いてソフトの改造です。今回はブザー「BZ」を出力として追加しました。
// 使用するピンを設定
int LED_1 = 13;
int LED_2 = 12;
int LED_3 = 8;
int SW = 2;
int BZ = 7;
void setup() {
// ピンのモードを設定
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(SW, INPUT_PULLUP);
pinMode(BZ, OUTPUT);
}
void loop() {
while (digitalRead(SW) == HIGH){}
//スイッチが押されるのを待つ
digitalWrite(LED_1, HIGH); //LED_1を光らせる
digitalWrite(LED_2, HIGH); //LED_2を光らせる
digitalWrite(LED_3, HIGH); //LED_3を光らせる
delay(60000); //1分待つ
digitalWrite(LED_1, LOW); //LED_1を消灯
delay(60000); //1分待つ
digitalWrite(LED_2, LOW); //LED_2を消灯
delay(60000); //1分待つ
digitalWrite(LED_3, LOW); //LED_3を消灯
digitalWrite(BZ, HIGH); //ブザーを鳴らす
delay(3000); //3秒待つ
digitalWrite(BZ, LOW); //ブザーを消す
delay(3000); //終了後、3秒待つ
}
BZはブザーを接続している7番ピン、ピンのモードは「OUTPUT」に設定。あとは3分のカウントダウンが終わった後でブザーを鳴らすという、簡単な改造です。ブザーを鳴らすのはLEDを光らせる場合と同じなので、詳しく解説するまでもないでしょう。
1分経つごとに短時間ブザーを鳴らすといった改造も簡単にできますので、試してみると面白いと思います。
ステップ4:ブザー音ではなくメロディーを流す
これでほぼ3分タイマーとしては十分な動作になったかと思いますが、ブザーで知らせるだけではあまりにもシンプル過ぎて、ちょっとつまらないですよね。ということで、最後の改造として、ブザーではなくメロディを鳴らすようにしてみましょう。
まずはハードの改造ですが、これはブザーを圧電スピーカーに変更しているだけです。
続いてソフトを改造しましょう。ブザーとは違い、ドやレ、ミといった音の高さまで指定できるのがポイントとなります。
// 使用するピンを設定
int LED_1 = 13;
int LED_2 = 12;
int LED_3 = 8;
int SW = 2;
int SPK = 7;
void setup() {
// ピンのモードを設定
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(SW, INPUT_PULLUP);
pinMode(SPK, OUTPUT);
}
void loop() {
while (digitalRead(SW) == HIGH){}
//スイッチが押されるのを待つ
digitalWrite(LED_1, HIGH); //LED_1を光らせる
digitalWrite(LED_2, HIGH); //LED_2を光らせる
digitalWrite(LED_3, HIGH); //LED_3を光らせる
delay(60000); //1分待つ
digitalWrite(LED_1, LOW); //LED_1を消灯
delay(60000); //1分待つ
digitalWrite(LED_2, LOW); //LED_2を消灯
delay(60000); //1分待つ
digitalWrite(LED_3, LOW); //LED_3を消灯
while (digitalRead(SW) == HIGH){
//スイッチがオンになるまでメロディーをループ
tone(SPK, 784, 250); //メロディーを流す
delay(250);
tone(SPK, 698, 250);
delay(250);
tone(SPK, 784, 250);
delay(500);
}
delay(3000); //終了後、3秒待つ
}
改造した部分はブザー(BZ)をスピーカー(SPK)にしたことと、最後のブザーを鳴らすところです。ステップ3ではブザーを鳴らして終わりでしたが、今回はスイッチが押されるまでメロディーを流し続ける、というものに変更しました。
音の高さは「tone()」で指定できます。例えば「tone(SPK, 784, 250)」では、スピーカーの接続されたピンに対し、785Hzの音(ソ)を250ミリ秒出力する、というものになります。
続くdelay()は、音が鳴っている間待つためのものです。これがないとスピーカーから次々音が再生されてしまい、何の音か聞き取れません。LEDを点滅させるときの間と同じようなものですね。
これを動かすと、某店アルバイト経験者なら心をかき乱されるメロディが流れるはずです。
改造を繰り返すことで楽しく続けられる!
単純にLEDを光らせるだけというLチカですが、これを元に改造していくだけで3分タイマーのような実用的なものが作れるのですから、バカにできません。ここからさらに改造して、たとえばGenuino 101であれば搭載されている加速度センサーを利用し、スイッチのかわりに本体を振ることでタイマーをスタートさせるとか、入力を強化して3分以外の時間も設定できるキッチンタイマーにするとか、表示を7セグメントLEDにするとか、目覚まし時計にするとか、夢はどんどん広がっていきます。
Arduinoのいいところは、ハード・ソフトともに多くの情報が公開されていることです。今回の3分タイマーもそうですが、まず簡単なものを真似して作り、そこから自分好みに改造していくというのが再入門に最適な方法といえるでしょう。イチから作るのは難しくても、改造ならハードルが低くなりますからね!
Image from Amazon.co.jp |
intel Genuino 101 Bluetooth開発ボード、Arduinoの互換性 6軸センサ |
■関連サイト
Arduino.org
提供:インテル