第18回 キッチンタイマーのスケッチ

やっと、、、キッチンタイマーのスケッチを作り始めます。

キッチンタイマー最初のスケッチ

製作するキッチンタイマーは、設定時間になったらアラームで知らせますが、設定時間になるまで動作していることを表現するために、1秒に1回、青色のLEDをピカッ、ピカッと点滅させたいと思います。

点滅パターンは以下のように1秒に1回、ちょっとの時間だけ青色LEDを光らせるようにします。

LED点滅パターン

「LEDをちょっとの時間だけつける」といっても、どのぐらいの時間、青色LEDを光らせれば「ピカッ」という感じになるのか見当がつかないんですよね。そこで、いろいろと試しながら、いい感じの光らせ方を見つけたいと思います。

 

スケッチ新規作成

それでは、キッチンタイマーのスケッチを新規作成しましょう。今回新規作成するスケッチは、今後改良しながら最終的なキッチンタイマーに仕上げていきます。

それでは、Arduino IDEを立ち上げて「ファイル」→「新規ファイル」を選択して新規スケッチを作成してください。次に、「ファイル」→「保存」を選択して、スケッチ名を「kitchen_timer」としてスケッチを保存しておきます。「kitchen」はちょっとスペルが難しいですよね。せっかくですのでスペルをきちんと覚えておきましょう。

必要ないコメントを削除して、スケッチの最初にコメント文でスケッチの情報を書いてください。これからいろいろと変更していきますので、変更履歴を書いておくとよいと思います。

キッチンタイマースケッチ1

これでスケッチの準備ができましたので、さっそく青色LEDを光らせるスケッチを作成しましょう。

 

1秒に1回LEDを光らせる

1秒間に1回、青色LEDをピカッと光らせたいのですが、どのぐらいの時間光らせれば「ピカッ」っていう感じがするんですかね。見当がつきませんので、まずは0.2秒ぐらい光らせてみたいと思います。

「1秒間に1回、0.2秒間光らせる」ということは、以下のようにLEDを「0.2秒つけて、0.8秒消す」というパターンを繰り返せばOKですよね。

LED点滅パターン(0.2秒点灯)

早速スケッチを作成してみましょう。青色LEDは12番ピンに接続しています。そのため、pinMode命令で12番ピンを出力に、digitalWrite命令でLEDをつけたり消したりします。時間待ちはdelay命令でしたよね。

さて、上のパターンのように光らせるために、以下のようなスケッチを書いてみました。

キッチンタイマースケッチ2

このスケッチは思った通りの動作はするものの、メンテナンス性は悪いですよね。とりあえず動作するからといってこのようなスケッチを書いてしまうと、あとでスケッチの行数が多くなってくると、何か変更したい場合、どこを変えればよいかだんだんわからなくなってきてしまいます。

そこで、命令のパラメータは直接数字を書くのではなく、なるべく#defineで定義するようにしてください。また#defineで定義したら、その内容をコメント文で説明しておくようにしましょう。

これからLEDの点灯時間をいろいろ変えて光る感じを見ていきます。例えばLEDを点灯している時間を0.1秒に変更したい場合、loopにある2ヶ所のdelay命名のパラメータを変更する必要があります(下のスケッチの青色部分)。

また、もし緑色のLEDの点滅がどんな感じになるか確認したい場合、pinMode命令とdigitalWrite命令の端子番号を全て変更する必要があります(下のスケッチの赤色部分)。

キッチンタイマースケッチ3

そこで、delay命令のパラメータと、pinMode命令とdigitalWrite命令の端子番号を#defineで定義します。

まず、青色LEDが接続されている12番端子は、LEDを光らせて秒を表現するので「BYOU_LED」で定義します。他に自分がわかりやすい名前があればそれでも構いません。

また、LEDをつけている時間は、秒を表現するときにLEDをONにしている時間ということで「BYOU_ON」で定義します。また、LEDを消している時間はLEDをOFFにしている時間ということで「BYOU_OFF」で定義します。

定義する内容は、以下になります。

定義する名前 定義する内容
BYOU_LED 12
BYOU_ON 200
BYOU_OFF 800

それでは、この内容を#defineで定義してスケッチを変更しましょう。

キッチンタイマースケッチ4

よし、これであとでいろいろ変更が出てきても#defineの部分だけ変更すればOKです。それでは実際にスケッチをArduinoボードに送って光る感じを確認しましょう。

うーん、、、、、

なんだか「ピカッ」というより「ピカァ」って感じです。もうちょっとシャープな感じ(?)で「ピカッ」と光らせたいので、0.2秒つけているところを0.1秒に変更してみます。

LED点滅パターンの変更

LEDをつけている時間を0.2秒から0.1秒に変更すると、消している時間も変更になりますよね。1秒間のうち、つけている時間を0.1秒にしたので、消している時間は、、、あれ? また計算しそうになりましたが、計算はArduino IDEにやってもらったほうがいいですよね。

LEDをつけている時間が0.1秒の場合、消している時間はどのように計算できるでしょうか。これは簡単ですよね。1秒 – 0.1秒 = 0.9秒です。つまり、1秒からつけている時間を引けば消している時間がわかります。

それでは、「#define BYOU_OFF」のところはどのように書けばよいか、まずは自分で考えてみてください。

わかりましたか? 1秒からつけている時間を引けばいいのですが、単位はミリ秒なので「1000 – BYOU_ON」ですよね。

これでLEDをつけている時間だけ変更すれば、消している時間はArduino IDEが計算してくれるように変更できました。

キッチンタイマースケッチ5

それでは、0.1秒つけるとどんな感じになるか実際に確認してみましょう。

うーん、もうちょっと「ピカッ」という感じにしたいので、LEDをつける時間を半分の「50ミリ秒」にしてみます。スケッチの変更箇所は「#define BYOU_ON 100」の100を50にするだけで大丈夫ですよね。

キッチンタイマースケッチ6

どうでしょうか。なんかいい感じで「ピカッ」ってなったと思います。他の時間も確認してみて、自分の好みの時間を探してみてください。世界にひとつしかないキッチンタイマーを作っていきますので、光り方もこだわってみてください。

 

ミニチャレンジ課題

LEDの光り方を変える課題にチャレンジしてみてください。

今まで、1秒に1回、ピカッ、ピカッ、とLEDを光らせましたが、今回作成したスケッチを変更して2秒に1回LEDを、ピカッ、ピカッ、と光らせてみてください。変更するところは1ヶ所だけのはずです。

また、点滅するLEDを緑色のLED(8番端子)に変更して、緑色の場合はどんな感じで光るのか確認してみてください。これも変更するところは1ヶ所だけのはずです。

光り方を確認できたら、元のスケッチ、つまり青色LED(12番端子)を1秒に1回光らせる内容に戻しておいてください。

 

更新履歴

日付 内容
2019.8.12 新規投稿