[[2006a/A5]] 目次 #contents *課題2 黒い線にそって動くロボット [#yff75b01] 作成日 6月14日 作成者 モロ、毛利、トラ、ポロリ *ロボット [#e5eb0f31] *プログラム [#zfd47bcb] **ベースのプログラム [#md578490] task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true) { if(SENSOR_1<40) //センサー1が黒い線にのると右に曲がる { OnFwd(OUT_A); Off(OUT_C); }else { Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_3<40) //センサー3が黒い線にのると左に曲がる { OnFwd(OUT_C); Off(OUT_A); }else { Off(OUT_C); OnFwd(OUT_A); } } } **前方のロボットに接触したら反転して進むプログラム (作成者;トラ)[#e220d9b6] #define BLACK 40 //黒の閾値 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true){ if(SENSOR_1<BLACK){ //線を右にはみでたら左へ戻る OnFwd(OUT_C); Off(OUT_A); }else{ Off(OUT_C); OnFwd(OUT_A);} if(SENSOR_3<BLACK){ //線を左にはみでたら右へ戻る OnFwd(OUT_A); Off(OUT_C); }else{ Off(OUT_A); OnFwd(OUT_C);} if(SENSOR_2==1){ //前方のロボに接触したら反転する OnFwd(OUT_A); OnRev(OUT_C); Wait(180);}}} **前方のロボットに接触したら右側から追い抜いて(あるいは避けて)、再びライン上にもどって進むプログラム (作成者:毛利)[#eff9a7fc] task main () { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true) { if(SENSOR_1<40) //線を右にはみ出たら左に戻る { OnFwd(OUT_A); Off(OUT_C); }else { Off(OUT_A); OnFwd(OUT_C); } if(SENSOR_3<40) //線を左にはみ出たら右に戻る { OnFwd(OUT_C); Off(OUT_A); }else { Off(OUT_C); OnFwd(OUT_A); } if(SENSOR_2==1) { OnRev(OUT_A+OUT_C); //バックする Wait(25); OnFwd(OUT_C); //右に出て抜き始める Off(OUT_A); Wait(50); OnFwd(OUT_A+OUT_C); //抜く Wait(75); Off(OUT_C); //ラインにもどり始める OnFwd(OUT_A); Wait(75); OnFwd(OUT_A+OUT_C); //ラインにもどる } } } *経過 [#p21475a8] 1.ロボット本体は、順調に完成のつもりだった・・・ 2.最初のプログラムはなぜかタッチセンサーも光センサーも反応しない・・・ 3.片方が反応するともう一方が反応しないけど、少し進歩。 4.四苦八苦のすえようやく完成だったが、スピードが遅くて追い抜く抜けない。 5.いろいろロボットを調整して試行錯誤で一度もとに戻してみたら偶然にもすごくよくなって完成(笑) *考察 [#d385380c] **工夫した点 [#a0cf34ec] ギアなどをいろいろ調節してスピードを加減した。けど適切なスピードを作るのに一苦労。 **反省点&改良すべき点 [#qf286e09] -カーブが急な場合回転の時間が固定されているので時間が足らないので、戻らないので、反転の際も光センサーを利用したかった。それが反省点でもある。 -前のロボットに接触した後に追い抜かすプログラムで、ロボットのスピードがあまりにも遅く、しっかりと追い抜かせなかった。 **コメント欄 [#yb2b40bb] #comment コメントをお願いします。