[[2016a/Member]] *課題 [#m861cd37] 3つあるコースのうち、指定された1つのコースを選び、ロボットを作って走らせる。私は、B地点からC地点までのコースを選びました。 *機体の解説 [#a60e0a75] タイヤ2つを前方に取り付け、滑りやすい支えを後方に1つ取り付け、左右に動きやすくした。 ~全体像 ~&ref(./index2.jpg,25%,aaa); ~上面 ~&ref(./index.jpg,25%,aaa); ~真正面 ~&ref(./index3.jpg,25%,aaa); ~底 ~&ref(./index4.jpg,25%,aaa); *プログラムの解説 [#d33c658f] ●内部システム #define middle 44 //光感知の度合い int t=0; //交差点を通過する回数 ●右折動作 ~(今回は右折のみ) ClearTimer(0); while(FastTimer(0)<=40) { if(SENSOR_2>middle+4) //左旋回 { OnFwd(OUT_C); OnRev(OUT_A); ClearTimer(0); } else if(SENSOR_2>middle+2) //左折 { OnFwd(OUT_A); Off(OUT_C); ClearTimer(0); } else if(SENSOR_2>middle) //直進 { OnFwd(OUT_AC); ClearTimer(0); } else if(SENSOR_2>middle-2) //右折 { OnFwd(OUT_C); Off(OUT_A); } else //右旋回 { OnFwd(OUT_A); OnRev(OUT_C); } } PlaySound(SOUND_CLICK); Off(OUT_AC); PlaySound(SOUND_FAST_UP); Wait(100); t++; ●交差点直進動作 { ClearTimer(0); while(FastTimer(0)<=40) { if(SENSOR_2>middle+4) //左旋回 { OnFwd(OUT_C); OnRev(OUT_A); ClearTimer(0); } else if(SENSOR_2>middle+2) //左折 { OnFwd(OUT_A); Off(OUT_C); ClearTimer(0); } else if(SENSOR_2==middle) //直進 { OnFwd(OUT_AC); ClearTimer(0); } else if(SENSOR_2>middle-2) //右折 { OnFwd(OUT_C); Off(OUT_A); } else //右旋回 { OnFwd(OUT_A); OnRev(OUT_C); } } PlaySound(SOUND_CLICK); Off(OUT_AC); PlaySound(SOUND_FAST_UP); Wait(100); OnFwd(OUT_C); Wait(50); Off(OUT_AC); t++; PlaySound(SOUND_FAST_UP); } *実際の動作 [#f99b54b8] B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点 task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); OnFwd(OUT_AC); RIGHT(); //1つ目の交差点を右折 repeat(2) {STRAIGHT();} //2,3つ目の交差点を直進 repeat(3) {RIGHT();} //3,4つ目の交差点を右折 } *結果 [#w865412d] 誤差や失敗を20回以上繰り返しましたが、光度と動作の調整により、ようやく順序よく交差点を全て読み取って正しく進むことができた。 *反省点 [#z290597c] 課題1に比べ、実際の動作の設定が少なかったが、調整の必要性が大きくなっていたので、時間がかかりました。最後のゴールのみ設定出来ませんでしたが、仲間の協力もあって、互いに光度などのプログラムを調整できて良かったと思います。