takedajs ログ

備考録

ArduinoでLT用のプレゼンタイマーを作成しました。

Aruinoの初心者キットを先輩から借りたので、会社で自分が主催しているLT会用のプレゼンタイマーを作成してみました!
ちなみに、Arduinoを触るのは始めてです。

仕様

LT会の発表は発表時間7分、質疑応答3分で行っています。
それを考慮して、簡単な仕様を考えてみました。

プレゼンタイマー
・スタートボタンを押す。
(発表開始)
・ブザー音が2秒鳴る。白LEDが光る。
・5分経つと黄色LEDが光る。ブザー音が1秒鳴る。
・7分経つと赤色LEDが光る。ブザー音が3秒鳴る。
(発表終了、質疑開始)
・3分経つとブザー音が3秒鳴る。
(質疑終了)

デモ

デモ用に待ち時間を短縮してます。
平日の朝に撮影したのですが、かなりシュールな動画になってます笑

Arduino プレゼンタイマー 0:54

配線

LEDはプラス側が手前です。
回路図作成ソフトで「Fritzing」てのがあり少し触ってみたのですが、作成に時間がかかりそうだったので、写真だけ載せておきます。

f:id:takedajs:20160217072238j:plain

コード

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