SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaでレゴロボットを動かしてみよう!(AD)

Javaでレゴロボットを動かしてみよう! 2-実践編

光センサーを利用したレゴロボットの制御

  • X ポスト
  • このエントリーをはてなブックマークに追加

前回は簡単なプログラムで、コンパイルから実行までの一通りの流れを体験し、モーターの制御を行いました。今回は光センサーも使い、もう少し組込みらしいプログラムを作ってみましょう。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 皆さん、こんにちは! 前回は簡単なプログラムで、コンパイルから実行までの一通りの流れを体験し、モーターの制御を行いました。今回は光センサーも使い、もう少し組込みらしいプログラムを作ってみましょう。

前回までの連載記事

光センサーとは

 これが光センサーで、その名の通り明るさを検知するセンサーです。赤い部分が発光ダイオードで、白い部分が受光素子です。発光ダイオードから発せられた光の反射光を受光素子が検知します。今回は明るさをパーセントで取得しますが、値は明るいほど100に近くなり、暗いほど0に近くなります。

図1 レゴロボット
図1 レゴロボット
図2 センサー拡大
図2 センサー拡大

黒いラインを見つけたら止まるプログラム

 それでは、早速やってみましょう!

 光センサーから明るさを読み取り、黒いラインを見つけたら止まるプログラムです。

 1:  import josx.platform.rcx.*;
 2: 
 3:  /**
4: * BlackStop.java
5: *
6: * 黒いラインを見つけたら止まる
7: *
8: */
9: 10: public class BlackStop { 11: public static void main(String[] args) { 12: 13: //光センサーで,Percent値を取得するように設定する。 14: Sensor.S2.setTypeAndMode(3, 0x80); ←(1) 15: Sensor.S2.activate(); ←(2) 16: 17: //前進 18: Motor.A.forward(); ←(3) 19: Motor.C.forward(); 20: 21: //光センサーで値を取得し続ける 22: while(true) { ←(4) 23: //黒と判定した場合ループを抜ける 24: if(Sensor.S2.readValue() < 45) { 25: break; 26: } 27: } 28: 29: //止まる 30: Motor.A.stop(); ←(5) 31: Motor.C.stop(); 32: 33: } 34: }
  1. 14行目
  2. Sensor.S2は、光センサーを接続しているポートを意味します。setTypeAndMode()で、光センサーが明るさをパーセント値で取得するように設定しています。
     
  3. 15行目
  4. 光センサーなどの電源供給が必要なセンサーはactivate()を記述します。
     
  5. 18~19行目
  6. モーターを順回転させ前進します。
     
  7. 22~27行目
  8. while文でループさせ、24行目のSensor.S2.readValue()で光センサーの値を取得します。値が45より小さい場合は黒と判断し、ループを抜けます。
     
  9. 30~31行目
  10. 左右のモーターをstop()で止めます。

プログラムの実行

 前回と同様に、コンパイルできたらRCXにクラスファイルを転送します。

 実行してみましょう。

C:\>lejosc BlackStop.java

C:\>lejos BlackStop
100%

C:\>
プログラムを実行すると、レゴロボットが前進し...
プログラムを実行すると、レゴロボットが前進し...
黒い線で止まる
黒い線で止まる

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

 黒いラインをはみ出ているように見えますが、センサーは黒いラインで止まっています。

 このプログラムでは白と黒の閾値(しきいち)を「明るさ45%」としましたが、実際は部屋の明るさなど環境によって閾値は異なりますので、本格的に開発する際には、こういうことも考慮してプログラムを組む必要があります。

次のページ
黒いラインを走るプログラム

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaでレゴロボットを動かしてみよう!連載記事一覧

もっと読む

この記事の著者

ちば やちよ(チバ ヤチヨ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2313 2009/04/02 17:30

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング