光センサーを利用したレゴロボットの制御
ちば やちよ [著] 2008/03/22 14:00

← 1 2 →

黒いラインを走るプログラム

 それでは今やったことを応用して、もう少し組込みらしいプログラムにしてみます。黒いライン上を走るプログラムを考えてみましょう。

黒いラインの図
黒いラインの図

 どのようにすれば良いでしょうか?

 ここでは、光センサーが読み取った値が45より小さい場合を黒、大きい場合を白と判断しています。今回の場合、黒だったら右に曲がる、白だったら左に曲がるというプログラムにすれば、結果としてラインの右縁をジグザグに走ることになりそうです。

 1:  import josx.platform.rcx.*;
 2:
 3:  /**
4: * LineTrace.java
5: *
6: * 黒いラインを走る
7: *
8: */
9: 10: public class LineTrace { 11: public static void main(String[] args) { 12: 13: //光センサーで,Percent値を取得するように設定する 14: Sensor.S2.setTypeAndMode(3, 0x80); 15: Sensor.S2.activate(); 16: 17: //前進 18: Motor.A.forward(); 19: Motor.C.forward(); 20: 21: //光センサーで値を取得し続ける 22: while(true) { 23: //黒と判定したら右へ曲がる 24: if(Sensor.S2.readValue() < 45) { ←(1) 25: Motor.A.forward(); ←(2) 26: Motor.C.stop(); 27: //白と判定したら左へ曲がる 28: } else { ←(3) 29: Motor.A.stop(); ←(4) 30: Motor.C.forward(); 31: } 32: } 33: 34: } 35: }

 先ほどと違うのは、22~32行目です(今回は止まることを考慮していません)。

  1. 24行目
  2. Sensor.S2.readValue()で光センサーの値を取得します。値が45より小さい場合は黒と判断します。
     
  3. 25~26行目
  4. Motor.A.forward()で左のタイヤを動かすモーターを順回転させ、Motor.C.stop()で右のタイヤを動かすモーターを止めると、右へ曲がります。
     
  5. 28行目
  6. 白と判断した場合。
     
  7. 29~30行目
  8. Motor.A.stop()で左のタイヤを動かすモーターを止め、Motor.C.forward()で右のタイヤを動かすモーターを順回転させると、左へ曲がります。

 コンパイルできたらRCXにクラスファイルを転送します。

C:\>lejosc LineTrace.java

C:\>lejos LineTrace
100%

C:\>

 実行してみましょう。

ライントレースの図
ライントレースの図

 おおぉ! 動きましたーーーっ!!(動画でお伝えできないのが残念です)

 どうでしょう。組込みっぽくなってきたでしょうか。

 次回は応用編として、スレッド、ボタン操作、赤外線通信などのプログラミングを紹介します。

他の記事も読む


<-
1 2
INDEX
Javaでレゴロボットを動かしてみよう! 2-実践編
はじめに
光センサーとは
黒いラインを見つけたら止まるプログラム
Page2
黒いラインを走るプログラム
プロフィール
ちば やちよ チバ ヤチヨ

ソフト開発によるジプシー生活を経験後、エンジニア育成に力を注ぐ。組込みの世界にJavaが普及する事を切に願っている。ロッテ・大塚明選手の応援振り付けがまだ半人前の為、日々精進している。


注目の求人情報
生産管理・工程設計/株式会社デンソー
海外拠点(欧米&アジア)での自動車用電子製品の組付に関る設備計画、設備稼働及び生産技術開発 ...
システムエンジニア/証券・金融向け企業
・証券関連システムの企画、要件定義、システム設計  ・協力会社管理
研究開発・教育/株式会社デンソー
乗員の「利便・安心・快適」を実現するECU製品ソフトウェアを支える、マイコン、基本ソフト、アプリ...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して


この記事のトラックバックURL: