連載
» 2014年03月06日 10時00分 UPDATE

アイデア・ハック!! Arduinoで遊ぼう(9):スイッチを使ってタイマーを制御――「運動しなさい! 電光掲示板」がついに完成!! (1/2)

頭の中のアイデアを「Arduino(アルドゥイーノ)」で実現!! 筆者と一緒にモノづくりの喜びや難しさを体験・体感してみよう。連載第9回は、前回作った電光掲示板にスイッチとブザーを追加する。仕様通りに完成させるぞ!

[三月兎,MONOist]
アイデア・ハック!! Arduinoで遊ぼう(9)

 厳しかった冬もようやく終わりを告げ、少しずつ春の気配を感じられるようになってきました。ただ、せっかく暖かくなってきても、筆者は毎日のようにPCにかじりついて仕事をしています。当然、運動不足の自覚もあり、いいかげん何とかしなくてはと思っていますが、なかなか実行に移せません……。

 カラダを動かすことは、運動不足解消だけでなく、考えで煮詰まった頭をリフレッシュさせてくれる効果もあります。そう、仕事中に誰かが「ちょっと散歩に行っておいでよ!」なんて声を掛けてくれたらどんなにいいことか……。

 そんなことを考え、前回、「Arduino」を専属トレーナーにしようと「運動しなさい! 電光掲示板」の開発に挑戦しました。ただ、ディスプレイの扱いが思いのほか手強くて、当初予定していた機能を盛り込むことができませんでした……。今回はそのリベンジです!


スイッチを使ってタイマーを制御! ディスプレイ表示と連動させる

 前回作ったのは、16文字×2行の表示が行えるOLEDカラーディスプレイを、3つのブロックに区切って文字を表示するシステムです。

 使用したディスプレイは、共立エレショップの「シリアル→パラレル変換ボード付16x2 OLEDカラーディスプレイ」です。このキットは、変換ボードとディスプレイがセットになっているので、たった2本のケーブルを接続するだけで配線が完了します。メッセージ表示は、「Serial.print()」を使って文字列を送るだけと超カンタンです! しかし、表示を思い通りに制御しようとすると、それなりにプログラミングしなくてはなりません。実際、ガリガリと書いてみたら、想像以上にプログラムが長くなってしまい驚きました。

 企画段階では、スイッチで設定時間を指定できるようにして、ブザー音とともにディスプレイにメッセージを表示するつもりでした。今回は、当初の計画通り完成させますよー! じゃじゃーん(画像1)。

運動しなさい! 電光掲示板 ver.1.1 画像1 「運動しなさい! 電光掲示板 ver.1.1」。スイッチで時間を設定して、メッセージ表示とともに音が鳴る

 前回の電光掲示板回路に、スイッチを3つとブザーを1つ追加しました。「スイッチもブザーもこれまで使ったことがあるから、今度こそラクショー!」と思っていたんですが……。ディスプレイに表示したタイマーの数字をチカチカと点滅させようとしたら、プログラムにちょっと工夫が必要でした。

 タイマーと連動させて文字を点滅させるのは、Arduino入門で必ずやる“LEDチカチカ”とは考え方が違いました。「マイコンプログラムは奥が深い!!」と思いつつ、どうにか「運動しなさい! 電光掲示板 ver.1.1」を完成させました(動画1)。


 スイッチで時間をセットして、中央のスタートボタンを押したら、タイマーが始動。前回より仕様を少しバージョンアップして、メッセージは複数登録したものをランダム表示するようにしました。

 スイッチを1回押すごとに、設定時間が「+1」または「−1」されます。また、さすがに60分を指定するのにボタンを59回押すのは面倒なので、長押ししたら連続して数字がインクリメント/デクリメントされるようにプログラムしました。もう1つ、タイマーの数字がチカチカと点滅するのもポイントです。これがないとシステムが動いているように見えないんですよね。

ブレッドボードで回路を組もう

 今回追加した機能は、日常使っている家電製品でもよくあるものですが、自分でプログラミングしてみると「なるほど、こういうロジックにしないと動かないのか」といった気付きもあり、非常に面白かったです。

 以下、今回使用する部品を紹介します(画像2表1)。

部品一式 画像2 「運動しなさい! 電光掲示板 ver.1.1」で使用する部品一式。OLEDとアドオンボードは、前回はんだ付けした
部品リスト 表1 「運動しなさい! 電光掲示板 ver.1.1」の制作で使用する部品リスト。価格は共立エレショップで購入した際のデータ(購入時期:2014年1月)。青色の枠内は、以降の連載でも使用する

 それでは、ブレッドボード上で回路を作成してみましょう。回路図と部品配置図を以下に示します(画像3画像4画像5)。

回路図 画像3 「運動しなさい! 電光掲示板 ver.1.1」回路図 ※画像クリックで拡大表示
部品の配置図 画像4 部品の配置図 ※画像クリックで拡大表示
ブレッドボード 画像5 ブレッドボードに部品を実装したところ

スイッチを押して、時間の設定をディスプレイに表示する

 今回、機能が追加されたので、モジュール構成は以下のようになります(画像6)。

モジュール 画像6 スイッチで時間を入力する関数と、ブザー関連の関数を追加。loop()内で、時間設定中とタイマーカウント中のモードを分けているのがポイント
       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.