Arduinoを始めよう!(1)シリアル通信編
2013年2月18日(月)
前回の課題解答
前回の課題の解答と解説です。前回の課題は、以下の通りでした。
- > LEDのHello Worldプログラムを改良し、モールス信号でHello Worldと伝えるプログラムに書き換える
- > 短点は200msとする
- > 長点は600msとする
- > 繰り返し送られるHello Worldの信号の間に長点2つ分(1200ms)の間を取る
以下に模範解答のプログラムを載せておきます。コメントに解説も書いておくので、参考にしてください。
const int INTERVAL = 200; const int LED_PIN = 13; void setup() { pinMode(LED_PIN, OUTPUT); // 13番ピンを出力モードに設定。 } // 短点のLED点灯 void signalShort() { digitalWrite(LED_PIN, HIGH); wait(1); digitalWrite(LED_PIN, LOW); wait(1); } // 長点のLED点灯 void signalLong() { digitalWrite(LED_PIN, HIGH); wait(3); digitalWrite(LED_PIN, LOW); wait(1); } // 引数に与えられた短点分待つ関数 void wait(int n) { for (int i = 0; i < n; i ++) { delay(INTERVAL); } } // Hのモールス信号 void h() { signalShort(); signalShort(); signalShort(); signalShort(); } // Eのモールス信号 void e() { signalShort(); } // Lのモールス信号 void l() { signalShort(); signalLong(); signalShort(); signalShort(); } // Oのモールス信号 void o() { signalLong(); signalLong(); signalLong(); } // Wのモールス信号 void w() { signalShort(); signalLong(); signalLong(); } // Rのモールス信号 void r() { signalShort(); signalLong(); signalShort(); } // Dのモールス信号 void d() { signalLong(); signalShort(); signalShort(); } void loop() { // HELLOのモールス信号 h(); e(); l(); l(); o(); // 単語間は7短点分待つ。最後のモールス信号に1短点分入るので、6短点待つ。 wait(6); // WORLDのモールス信号 w(); o(); r(); l(); d(); // HELLO WORLD間は6短点分待つ。最後のモールス信号に1短点分入るので、5短点待つ。 wait(5); }
今回の課題紹介と次回予告
[課題] 暗くした場合にLEDが200ms間隔で点滅する
今回の課題は、記事中で作成したプログラムを改良することです。上記の仕様を満たすようにプログラムを改良してください。
次回の記事で模範解答のプログラムを載せますので、それまでに考えてみてください。
今回はArduinoへ命令を出すための信号入力に話を絞りました。信号入力を自在に扱えるようになれば、Arduinoを手足のように扱えるようになります。今回は光センサだけを取り扱いましたが、様々なセンサが安価に市販されています。
> [参考] 秋月電子通商(商品検索ページ)
使い方は基本的に、今回紹介した光センサと同じです。センサは何かを感知し、それを電圧の変化としてArduinoに教えます。プログラマはその値を使って好きな処理を書き、出力として外の世界へ解き放ちます。その外の世界の一つが前回も今回も使用したLEDです。
次回はArduinoを使って、モーターを回転させます。モーターを回転させることが出来れば、夢のミニ四駆にまた一歩近づきます。来週の記事を読めば、Arduinoの入力と出力は、ほぼマスターしたことになると思いますので、是非、次回もお付き合いください。
【参考リンク】
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。