MINDSTORMSはセンサからの入力によって動作を変更させることができる. この事は前回の記事でも書いたし,一般的なプログラムと同じ.入力によって出力が変わる.
なので,実際にロボットを作成して任意の動作をさせたいと思ったら,センサからの値をいかに利用して,いかにモータを制御するかってのが重要になる.
たとえば,地面に黒線があって,この線のとおりに移動させたいとき,どうすれば良いか?
どのセンサを使えば良いのか?どのモータを動かせば良いのか.ってことを考えていくわけです.これが非常に楽しい.
私が実装した処理内容はこんな感じ.もちろん他にも方法はあると思うし,これが一番効率が良いとは思ってない.でも,動く.だから楽しい.笑
- 左右についているモータのうち,片方モータを回す.
- センサの色が変わったら回転しているモータを停止させ,回転していないモータを回転させる.
ちなみに,使用したセンサは色センサを利用した.このセンサは,センサが取り込んだ色によって,明度を数字を返す.黒なら0,白なら50見たいな感じで.
実際のソースコードはこんな感じです.
#include "NXCDefs.h" #define THRESHOLD 40 #define DISTANCE 10 task main() { SetSensorLight(IN_3); OnFwd(OUT_B,75); while(true){ if(Sensor(IN_3) > THRESHOLD){ Off(OUT_BC); if(direction == 1){ OnFwd(OUT_B,75); Wait(100); until(Sensor(IN_3) <= THRESHOLD) ; }else{ OnFwd(OUT_C,75); Wait(100); until(Sensor(IN_3) <= THRESHOLD) ; } direction *= -1; } } }
実際には,走行させる床の材質やら,光の加減なんかでうまく行かない場合もあったんだけど,ほとんどの場合はうまく動いたのでOKってことで.笑