ArduinoでLT用のプレゼンタイマーを作成しました。
Aruinoの初心者キットを先輩から借りたので、会社で自分が主催しているLT会用のプレゼンタイマーを作成してみました!
ちなみに、Arduinoを触るのは始めてです。
仕様
LT会の発表は発表時間7分、質疑応答3分で行っています。
それを考慮して、簡単な仕様を考えてみました。
「プレゼンタイマー」
・スタートボタンを押す。
(発表開始)
・ブザー音が2秒鳴る。白LEDが光る。
・5分経つと黄色LEDが光る。ブザー音が1秒鳴る。
・7分経つと赤色LEDが光る。ブザー音が3秒鳴る。
(発表終了、質疑開始)
・3分経つとブザー音が3秒鳴る。
(質疑終了)
デモ
デモ用に待ち時間を短縮してます。
平日の朝に撮影したのですが、かなりシュールな動画になってます笑
配線
LEDはプラス側が手前です。
回路図作成ソフトで「Fritzing」てのがあり少し触ってみたのですが、作成に時間がかかりそうだったので、写真だけ載せておきます。

コード
delay()はある一定時間以上だと正常動作しなくなるのですが、時間の後ろにULをつけると動作します。詳しくは参考に記述したリファレンスサイトをご確認ください。
// ブザーで利用するピン定義
int buzzer_pin = 8;
// LEDで利用するピン定義
int led_pins[] = {9,10,11};
// 1秒
int one_sec = 1000;
void setup() {
}
void loop() {
//***********【プレゼンスタート】**************
//ドの音を2秒鳴らす
tone(buzzer_pin, 523, one_sec * 2);
//白のLEDを光らせる
digitalWrite(9, HIGH);
//5分待つ
delay(one_sec * 300UL);
//***********【開始から5分経過】**************
//ミの音を1秒鳴らす
tone(buzzer_pin, 659, one_sec * 1);
//緑のLEDを光らせる
digitalWrite(10, HIGH);
//2分待つ
delay(one_sec * 120UL);
//***********【開始から7分経過】**************
//赤のLEDを光らせる
digitalWrite(11, HIGH);
//ソの音を3秒鳴らす
tone(buzzer_pin, 784, one_sec * 3);
//***********【質疑応答スタート】**************
//3分待つ
delay(one_sec * 180UL);
//***********【質疑応答終了】*****************
//ソの音を3秒鳴らす
tone(buzzer_pin, 784, one_sec * 3);
//すぐに処理が終了しないように、3分だけ待機
delay(one_sec * 180UL);
}
苦労したこと
開発できる場所が限られる
家だと集中できないので、作業するときはファミレスでやることが多いです。
ただ、人が沢山いるファミレスでハード系の作業をやるのは流石に厳しいので、今回は人気のないコンビニのイートインコーナーで作業してました。
配線いじったり、音がなったりしてたので、こそこそやっていました(汗)
ハードを扱う怖さ
Arduinoの記事をみると、配線を間違えると繋いでるPCが壊れる!とか、 LEDの極性を間違えると部品が吹き飛ぶよ!などと書いてあったので、 ビクビクしながらやっていました。
感想
思ってた以上に簡単に動く物が作れた!
専用の開発環境がある。公式サイトや記事の充実。簡単な文法で実装可能。
ハードウェア面白い!
日頃ソフトしかやっていないので、ハードと組み合わせて何か作りたくなった。
エンジニア以外の人に是非やってもらいたい!
基礎のプログラミング覚えられる。モノ作りの楽しさを実感できる。
参考
Arduino docs
https://fabkura.gitbooks.io/arduino-docs/content/chapter7.html
delayMicroseconds(us) - Arduino 日本語リファレンス
http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=2564