2009-11-15

Arduino 動作確認

先日購入した アルデュイーノ(Arduino)。環境構築まではしたんですが、その後は案の定、放ったらかしになってました。本日、やっと動作確認。
以下、いまさらですが、今回学んだ Arduino の基礎を。

◆環境構築
Arduino と PC を USB で接続する前に、ドライバをインストールしておきます。
本来なら、本家 Arduino のページを参照し、この辺りからソフトをダウンロードして、環境構築をするのですが...スイッチサイエンスさんで、日本語化環境を公開されているので、そちらを使用しました。
Arduino統合環境日本語版

USB シリアルのドライバも入ってます。
ダウンロードしてきた arduino-0017-ja-jp.zip を解凍して、インストール。完了後、USB 経由で PC と Arduino を接続。

◆プログラミング(スケッチ)
Arduino を起動すると、sketch_xxxxx という名前のタブがあります。こいつは、Visual Studio で言うところのプロジェクト名みたいなモンすかね。いきなり名前を変更しようとすると怒られるので、適当に何か書いて、後から好きな名前に変更するが吉。

プロジェクトのフォルダですが、厳密に管理されている訳ではないので、エクスプローラ等でファイルを好きなフォルダへ移動させてしまっても大丈夫。Arduino の [開く] ボタンから呼び出せば OK。

ソースコードの記述ですが、Arduino のエディタが使いづらいんで、環境設定メニューで、[外部のエディタを使用する] にチェック。Arduino 環境のプログラムフォルダを開いて、*.pde がソースファイルらしいので、こいつを秀丸で開いてコーディングする形にしました。
ああ、そうそう、スケッチは UTF-8 で書いてやる必要があるので、その点、注意。秀丸だと、ファイル(F) → エンコードの種類(D) で UTF-8 を選択。Shift-JIS だと日本語のコメントが化けるなり。

さて、C のプログラムが main() 関数からスタートするように、Arduino では、下記2つのファンクションの記述が必須となっているようです。

  • void setup()
  • void loop()
まず、setup() が呼び出されて、次に loop() が何回も呼び出されるって寸法、かな。

◆コンパイル&Arduinoへ転送
  1. 秀丸で書いたスケッチ(プログラム)をセーブ。
  2. Arduino の [検証] ボタンを押すと、ソースコードがリロードされてコンパイル実行開始。
  3. [マイコンボードに書き込む] ボタンを押すと、プログラムが Arduino へ転送されて、動き出します。
Arduino へ転送されたスケッチは、ボードに電源が入れば動き始めます。

今日は、曲げセンサの値を、文字列で COM ポートへ送信するプログラムを作ってみました。まんま サンプルプログラム ですね。でも、実現したい機能に対しては、これで十分なので。


//-----------------------------------------------------
// 初期化
//
//-----------------------------------------------------
void setup()
{
 Serial.begin(115200);
}

//-----------------------------------------------------
// メイン
//
//-----------------------------------------------------
void loop()
{
 int iValue;

 Serial.print("[Sensor]");

 // Analog 0
 iValue = analogRead(0);
 Serial.print(iValue, DEC);
 Serial.print(",");

 // Analog 1
 iValue = analogRead(1);
 Serial.print(iValue, DEC);
 Serial.print("\r\n");

 delay(50);
}

クルマのアクセルとブレーキの踏み加減をセンサで検出して COM ポートへ送信したいのです。
曲げセンサは、Analog 0 ポートへ接続。Analog 1 はグランドへ落としてあります(センサ未接続)。

PC 側で、TeraTerm を使って受信してみました。
ジャンプワイヤを数本繋げるだけ、あとは全てソフトでやっちゃう!!楽しいです。