[[2006a/B5]] *タッチセンサを使ったロボット [#j784ca95] **壁の間を行き帰り [#p6e8fb36] 作成:坂本達也 task main() { SetSensor(SENSOR_1,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_TOUCH); While(true)//この後の動作を延々繰り返す {OnFwd(0UT_A+OUT_C); until((SENSOR_1==1)||(SENSOR_3==1));//両方のセンサーが壁に当たったら Off(OUT_A+OUT_C);//停止 Rev(OUT_A+OUT_C);//後退 Wait(100); Fwd(OUT_A)+Rev(OUT_C);//反転した後、前進(最初のプログラムに戻る) Wait(360);} } *光センサーを使ったロボット [#o70c99e7] **黒い線に沿って動くロボット [#f3cea957] #define THRESHOLD 40 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true) { If((SENSOR_1> THRESHOLD)&&(SENSOR_3> THRESHOLD)) { OnFwd(OUT_A+OUT_C); } If(SENSOR_1< THRESHOLD) { OnFwd(OUT_C); until(SENSOR_1> THRESHOLD); } If(SENSOR_3< THRESHOLD) { OnFwd(OUT_A); until(SENSOR_3> THRESHOLD); } } } **光を追いかけるロボット [#ked9e9bd] int light_max=0,time_max=0; #define TURN_TIME 360 #define TURN_RIGHT OnFwd(OUT_A);OnRev(OUT_C); #define TURN_LEFT OnRev(OUT_A);OnFwd(OUT_C); #define STOP Off(OUT_A+OUT_C); task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); ClearTimer(0); while(FastTimer(0)<TURN_TIME) { TURN_RIGHT; if(SENSOR_1>light_max) { light_max=SENSOR_1; time_max=FastTimer(0); } } STOP; Wait(50); TURN_LEFT; Wait(TURN_TIME-time_max); Off(OUT_A+OUT_C); while(true) { if(SENSOR_1!=light_max) { TURN_RIGHT; until(SENSOR_1==light_max); } } }