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

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

ティップス

tips

EV3: 超音波センサを使う中・上級者向け

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

・超音波センサを使う
 超音波センサを使用すると、障害物にぶつかる前に回避することができます。直進するロボットが障害物に一定の距離に近づくと方向を変えるというプログラムを作ります。
下記のサンプルプログラムを入力します。ファイル名は「USonic.c」とします。また、前述と同じように「USonic.prj」も作成しておきます。超音波センサはポート4にモータはポートB、Cに接続します。

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

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

 setSensorPort(CH_4,USONIC,0); //ch,type,mode
 startSensor();

 while(true){
  OnFwd(OUT_BC);
  i=getSensor(CH_4);
  if(i < 300){ //30cm (300mm)
   OnFwd(OUT_B);
   OnRev(OUT_C);
   Wait(1200);
  }
  if(ButtonPressed(BTN1))break; //Stop Program
 }
 Off(OUT_BC);
 closeSensor();
}

 setSensorPort()命令で接続ポート、センサタイプ、モードを設定します。getSensor(CH_4)命令により、障害物との距離を調べてi に格納します。iが300(30cm)よりも小さくなると回避行動が実行されます。タッチセンサプログラムと同様にwhile(true)を用いた無限ループプログラムになっていますので、プログラム停止処置として if(ButtonPressed(BTN1))break; が入っています。これにより、キャンセル(バック)ボタンを押すとプログラムが停止します。



 次はカラーセンサ(ライントレース)です。

← タッチセンサを使う |  カラーセンサを使う 1 →

book

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

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

↑page top