実践ロボットプログラミング LEGO Mindstorms NXTで目指せロボコン!

[著者]
藤吉弘亘・藤井隆司・鈴木裕利・石井成郎

ティップス

tips

EV3: カラーセンサを使用したライントレース中・上級者向け

※ここで使用しますヘッダファイル(JissenPBL.h)およびEV3 BricxCCプログラムランチャー(run.rbf)は、 九州工業大学 花沢明俊先生が作成されたファイルを使用しております。 ファイル使用に当たり、快く了承していただき感謝いたします。 このヘッダファイルの著作権およびその他の権利は九州工業大学 花沢明俊先生にあります。

・カラーセンサを使う 1
 EV3のカラーセンサを使用したライントレースプログラムを作ります。白の部分では右回転、黒の上では左回転するプログラムにすることにより、1つのカラーセンサでも黒の線に沿ってライントレースをすることができます。
下記のサンプルプログラムを入力します。ファイル名は「Color_mono.c」とします。また、前述と同じように「Color_mono.prj」も作成しておきます。カラーセンサはポート3にモータはポートB、Cに接続します。

// Sample Program "Color_mono.c"
#include "JissenPBL.h"

int main()
{
 int i=0;
 OutputInit(); //use Motor
 initSensor(); //use Sensor
 ButtonLedInit(); //use button

 setSensorPort(CH_3,COLOR,0); //ch,type,mode
 startSensor();

 while(true){
  i=getSensor(CH_3);
  if(i > 50){
   OnFwd(OUT_B);
   Off(OUT_C);
  }else{
   OnFwd(OUT_C);
   Off(OUT_B);
  }
  if(ButtonPressed(BTN1))break; //Stop Program
 }
 Off(OUT_BC);
 closeSensor();
}

 setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。今回はライントレースのセンサとして使用するため、モード0(反射モード)にします。getSensor(CH_3)命令により、カラーセンサの読み取り値をiに格納します。カラーセンサの読み取り値が50よりも大きい(白の部分)場合、ポートB(左モータ)のみ前進してロボットは左回転します。逆にカラーセンサの読み取り値が50以下(黒の部分)の場合、ポートC(右モータ)のみ前進してロボットは左回転します。



 次はカラーセンサ(色)を使ってみましょう。

← 超音波センサを使う |  カラーセンサを使う 2 →

book

実践ロボットプログラミング
LEGO Mindstorms NXTで目指せロボコン!
本体価格: 2,300円/ISBN: 978-4-7649-0378-4
BUY NOW!!

教育用レゴ マインドストームNXT
次世代のロボット教材で、生徒や学生たちは
自分の手で実際に動かしながら、科学、技術と情報、
工学を楽しく、体験的に学習できます。
MORE

↑page top