@kyanny's blog

My life. Opinions are my own.

はじめての Arduino

Arduino を買ってみた。自分の書いたプログラムコードでハードウェアを制御するのはたぶんうまれてはじめて。電子工作の類もほとんど経験がないので、ゴツゴツした基盤を触ってるだけでなんだか新鮮な気持ち。


嬉しいのでデジカメで動画を撮って YouTube にアップロードしてみた。 YouTube へアップロードするのもこれがはじめて。 Google アカウントと YouTube アカウントのひもづけとかもさっきやったばかり。ちなみに動画二つあるけどどっちもスケッチは同じもの。片方は露出を最低まで落として LED の点滅が見えやすいようにしてみた。

Arduino IDE のほうは、最新版は arduino-0017 がダウンロードできたのだけど、起動すると Arduino cannot run because it could not create a folder to store your settings. というエラーがでて起動できなかった。エラーメッセージで検索してみて、 Windows Vista の場合管理者権限で起動するように実行ファイルの属性を変更すれば良いらしいことがわかったのだけど、あいにく Mac OSX を使っているので原因は別のところにあるらしい。他のページでは Mac OSX で何か違う Java 関連のエラーが出たときの対処法が書いてあって、そこでは Arduino 16 の情報を見るウィンドウから 32 ビットで起動するにチェックを入れろ、と書いてあったのだけど adruino-0017 に入ってる Arduino アプリケーションにはそういう項目がなかった。しょうがないので arduino-0016 のほうをダウンロードしてきて、もろもろ書いてあるとおりに変更して無事に起動できた。 data ディレクトリを消さないと再起動できないとかもそのまま。

参考サイト

橋本商会 » Mac版Arduino IDEがlibrxtxSerial.jnilibが見つからないエラーで起動しないのを対処
旧Mapo堂: フィジカルコンピューティング第1歩
Arduinoというマイコンボードの話:ロシア語はじめました:So-netブログ

とりあえず、 Hello, World! 的なところは終わったのかな?面白いと思ったのは、 USB ケーブルを抜いてさしなおしても、さっき Upload したスケッチの命令どおりに動くというところ。フラッシュメモリに書き込んでいるからリセットして初期化される、みたいなことがないってわけなのかな。いままで Perl とかばっかりで、起動してもすぐ終了するプログラムばかり書いてきたので、書いたプログラムが電源切って入れ直しても、自分で再起動させてやらなくても動くっていうのは不思議な感じがする。

いままでこういう基盤むき出しのパーツはどうも苦手意識があって、だからパソコンの自作なんかも結構おっかなびっくりやってたりしたけど、 Arduino は値段もそんなに高くないし、小さいし、どう使えばいいか本読めば書いてあるしで、安心していじれそう。これでいきなりエレクトロニクスに強くなる!ってことはないだろうけど、少しでも苦手意識をなくして、苦手だからと思ってあんまり興味を抱けてなかったのがハードウェアにも興味が持てるようになるといいなあ。もうすでにある程度興味があるから Arduino を買ったわけだけども。

本体も本も Amazon で買った。こういうのは本当に何がなにやらさっぱりわからないので、素直にブログとかで薦められているものをそのまま選んだ。

Arduino をはじめてみた(1) | _level0 - KAYAC Front Engineer Blog

Arduinoをはじめようキット

Arduinoをはじめようキット

Arduinoをはじめよう (Make:PROJECTS)

Arduinoをはじめよう (Make:PROJECTS)

上の動画で LED を光らせてるスケッチはこれ。本に載ってる例だと味気ないので、ちょっとリズミカルにしてみた。

// Example 01 : Blinkng LED
#define LED 13
void setup()
{
 pinMode(LED, OUTPUT); 
}
void loop()
{
  digitalWrite(LED, HIGH);
  delay(200);
  digitalWrite(LED, LOW);
  delay(200);
  digitalWrite(LED, HIGH);
  delay(200);
  digitalWrite(LED, LOW);
  delay(200);
  digitalWrite(LED, HIGH);
  delay(200);
  digitalWrite(LED, LOW);
  delay(200);

  delay(1000);
}