[[2006a/練習問題]] **課題2 黒い線を沿って走るロボット [#u47370b6] *ぶつかると反転して進むロボット [#a8106304] 制作者:トミー 掲載日:6月16日 #define turn_RIGHT ;OnFwd(OUT_A);OnRev(OUT_C);Wait(150); task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); while (true) { OnFwd(OUT_A+OUT_C); if (SENSOR_1 < 45) { OnFwd(OUT_C); OnRev(OUT_A); until (SENSOR_1>45);} if(SENSOR_3<40) { OnFwd(OUT_A); OnRev(OUT_C); until(SENSOR_3>45); } if(SENSOR_2==1) { //タッチセンサーが反応した場合 OnRev(OUT_A+OUT_C); //0.8秒後退 Wait(80); turn_RIGHT //逆向きになるまで回転 } } } 制作者 Hagino task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true) { if(SENSOR_1<40; { OnFwd(OUT_C); OnRev(OUT_A); } if(SENSEOR_3<40) { OnFwd(OUT_A); OnRev(OUT_C); } if((SENSOR_1>40)&&(SENSOR_3>40)) { OnFwd(OUT_A+OUT_C); if(SENSOR_2==1) { OnFwd(OUT_A);OnRev(OUT_C); Wait(180); OnFwd(OUT_A+OUT_C); } } } } *ほかのロボットにあたるとよけるロボット [#u963aca1] 制作者:トミー 掲載日:6月23日 #define THRESHOLD 40 task main () { SetSensor(SENSOR_1, SENSOR_LIGHT);/センサー1をライトセンサーと宣言 SetSensor(SENSOR_2, SENSOR_LIGHT);/センサー2をライトセンサーと宣言 SetSensor(SENSOR_3, SENSOR_TOUCH);/センサー3をタッチセンサーと宣言 OnFwd(OUT_A+OUT_C); while (true) { if (SENSOR_3 == 1) { OnRev(OUT_A+OUT_C) ; Wait(50);0.5秒後退する Off(OUT_A+OUT_C); OnRev(OUT_C); Wait(150);/モーターCを1.5秒逆回転 OnFwd(OUT_A+OUT_C); Wait(150);/1.5秒進む Off(OUT_A); Wait(150);1.5秒左回転させる OnFwd(OUT_A); Wait(150); Off(OUT_A); Wait(150); OnFwd(OUT_A);/モーターAを動かし元のコースに戻る } else { if (SENSOR_1 < 40) { Off(OUT_A); OnFwd(OUT_C);センサー1に黒線が入ると左回転 } if (SENSOR_2 < 40) { OnFwd(OUT_A); Off(OUT_C);センサー2に黒線が入ると右回転 } } } } *苦労した点 [#g9e13731] ・やっぱりタッチセンサーの付け方ですかね。光センサーのほうはある程度 付けやすかったのですが…。そして、なにより急なカーブを曲がる時が難しかったですね。なかなかうまく曲がりきれなくて何度もコースアウトをしてしまいました。そうして、何度もプログラムを改善させていくといつのまにかうまく曲がれるようになっていました。 *工夫した点 [#ud69f104] ・光センサーを機体の中央にもってきました。どうしてかというと、曲がるときに光センサーを前のほうに装着しているとすんごい誤差が生じるので真ん中に持ってきました。 *反省点 [#p5aa7b41] 一番の反省点は、なかなかロボのために集まることができなくて大変多くの時間を必要としたところです。次からは、できるだけ集まって期限に間に合うように進めていきたいです。 *ご意見・ご感想 [#c1fc15f9] コメントをどうぞ! #comment