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

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

ティップス

tips

EV3: タッチセンサを使う中・上級者向け

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

・タッチセンサを使う
 直進するロボットが障害物にぶつかると少し後退して方向を変えるというプログラムを作ります。
下記のサンプルプログラムを入力します。ファイル名は「Touch.c」とします。また、前述と同じように「Touch.prj」も作成しておきます。タッチセンサはポート1にモータはポートB、Cに接続します。

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

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

 setSensorPort(CH_1,TOUCH,0); //ch,type,mode
 startSensor();

 while(true){
  OnFwd(OUT_BC);
   i=getSensor(CH_1);
   if(i==1){
    OnRev(OUT_BC);
    Wait(2000);
    OnFwd(OUT_B);
    OnRev(OUT_C);
    Wait(1200);
   }
  if(ButtonPressed(BTN1))break; //Program stop
 }
 Off(OUT_BC);
 closeSensor();
}

 InitSensor();はセンサの初期化をします。そしてStartSensor();でセンサの使用を開始します。これは、タッチセンサ以外のセンサ(後述)でも同じように使用します。setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。getSensor(CH_1)命令により、タッチセンサの状態(押されていれば1、押されていなければ0)をi に格納します。
 while(true)を用いた無限ループプログラムになっていますので、プログラム停止処置として if(ButtonPressed(BTN1))break; が入っています。これにより、キャンセル(バック)ボタンを押すとプログラムが停止します。



 次は超音波センサを使ってみましょう。

← 音をならしてみよう |  超音波センサを使う →

book

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

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

↑page top