Arduino Unoというオープンソースのハードウェアを買いました。
アルドゥイーノ ウノと読むのだそうです。
Arduinoはプログラミング可能なハードウェアです。これを使えばセンサーで読み取った値を元に何らかの処理を行ったり、自作プログラムをパソコンから外に出して利用する事が出来るようになります。
そもそもは、最近ネットワーク温度計をcactiで表示させるスクリプトを作っているうちに、だんだんと温度計自体も自作出来るのではないかと思ったのが発端です。
現在はオライリージャパンから発売されている「Auduinoをはじめよう」という書籍を見ながらせっせと回路を作っています。
Arduino UnoはUSBケーブルから電源供給とプログラミングが出来るので、パソコンから手っ取り早くハードウェアに入出力可能なデバイスを作るのが非常に簡単に出来ます。
かなりDEEPに見えるハードウェアですが、実際触ってみるとブレッドボードを使えば機器同士の接続に半田付けも不要でかなり楽にハードウェアを使ったプログラミングが出来ます。
また、言語はArduino言語という独自言語ですが、C/C++がベースになっています。
Arduinoとブレッドボードを結線しながら回路を作って動作させます。
テスト環境で上手く動作したら、基盤に半田付けをして、作品を完成させるイメージです。
プログラムはWindows OS上にインストールしたIDEで作成し、USBケーブル経由で本体に送ります。
ほぼ書籍のサンプルのままですが、例えば、上の写真のようにブレッドボード上に接続したLEDをボタン操作でON/OFFする場合は以下のようなスクリプトでArduinoを動作させることが出来ます。
//LEDを13、BUTTONを7と定義する //Arduino Unoには0から13までのデジタルIOがあり、 //ここではLEDを13番に、BUTTONを7番に挿しています。 const int LED = 13; const int BUTTON = 7; //変数の初期化 int val = 0; int old_val = 0; int state = 0; void setup() { //pinModeでLEDとBUTTONをそれぞれOUTPUTとINPUTに定義します。 //OUTPUTにするとIOを出力に、INPUTで入力に設定出来ます。 pinMode(LED,OUTPUT); pinMode(BUTTON,INPUT); } void loop() { //BUTTONステータスをvalに格納 val = digitalRead(BUTTON); //この場合、HIGHはLEDのON、LOWはOFFを表します。 //BUTTONが押されていて、前回はボタンが押されていなかった場合にTrue if ((val == HIGH) && (old_val == LOW)) { //stateから1引いた値をstateに格納 state = 1 - state; //100ミリ秒待つ delay(100); } //old_valにvalの値を格納 old_val = val; //stateが1だった場合、LEDを点灯する if (state == 1) { digitalWrite(LED,HIGH); } //stateが1以外だった場合、LEDを消灯する else { digitalWrite(LED,LOW); } }
今回のプログラムはLEDを光らせるだけですが、Arduinoを用いて簡単にプログラム出来るのが分かってもらえるとうれしく思います。また、プログラミングした結果が実際に手で触れられる形で表現出来るのは想像以上に面白いものがあります。
参考リンク
今回読みながら進めている書籍「Arduinoをはじめよう」です。
自分の場合は秋葉原の千石電商で書籍と機器を購入したのですが、はっきり言って初めてなら書籍は必ず買った方が良いと思います。店員の方は部品だけ買ってあとはInternetで・・・。と仰っていましたが、かなり敷居が高いです。
本を読む前はまず単語がそもそも分からないと思うので、Internetで効率良く調べることが出来ないと思います。
本が2100円もするので少しお高い投資になりますが、個人的には書籍は買っておいた方が良いと思います。