blog.kur.jp

バイオリンと山、自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

MINDSTORMS NXTでセンサからの入力を受け付ける

モータの制御はできるようになったので,外部センサからの入力で制御っぽいことをやってみる.やりたいことはこんな感じ.ちなみに,ロボットの前部にはプッシュセンサを取り付けてある.

  1. 何か物に当たるまで前進
  2. 物に当たったら,少しバック
  3. ロボットの向きを少し右に
  4. 再び何か物に当たるまで前進

センサを使うにはどうするかというと,

SetSensorTouch(IN_1);

でセンサをイネーブルにするだけ.この場合だとPort1にプッシュセンサが接続されていることになります.で,プッシュセンサが押された場合はSENSOR_1が1になる.なので,無限ループの中で,ただひたすらSENSOR_1が1になるのを待てばいい.

#include "NXCDefs.h" task main() { SetSensorTouch(IN_1); OnFwd(OUT_BC,75); while(true) { if(SENSOR_1 == 1){ OnRev(OUT_BC,75); // Wait(300); OnFwd(OUT_C,75); Wait(300); OnFwd(OUT_BC,75); } } }

こんな感じのコードで壁に当たったら少しバックして進み続けると言う動作を行います.