[[2010a]] *目次 [#mfd73aad] #contents *課題2:黒い線に沿って動くロボット [#b03f54b0] 各チームで作成したコースを1周するロボットを製作せよ。交差点以外のコース上に350mlの空き缶を2個以上おき、空き缶にぶつかった時には次のような動作するプログラムを作成せよ。(他のメンバーと重ならないように一人一つのプログラムを作成する) 1. 空き缶をコース上に戻して再びコースに戻って進む 2. 空き缶を次の交差点まで運んで行き、その交差点に空き缶を残してさらにコースに沿って進む ただし、 •速さと正確さを追求すること •コースを1周したら自動的に止まること •交差点では一時停止すること *メンバー [#v3f7b031] すずき&br; むらかみ *ロボットについて [#c32884e4] -タッチセンサーの接触部分の脆さが難点… *コースについて [#w8701438] #ref(SH3E0008.jpg,around,left) simple is the best! #clear *プログラム [#v6f823fd] **すずきのプログラム [#o95af1e0] ***空き缶を次の交差点まで運ぶプログラム [#e27c5f41] **むらかみのプログラム [#laca2f48] ***空き缶を避けて進むプログラム [#sb42aaf4] #define light 40 //閾値 #define time 50 //待ち時間 #define RUN_TIME 8700 //走る時間 task main() { SetPriority(1); //mainの優先順位を1にする。 SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); ClearTimer(0); while(Timer(0) <= RUN_TIME) { start follow_line; if(SENSOR_2>1) //タッチセンサーが反応 { OnRev(OUT_A+OUT_C); Wait(time); OnFwd(OUT_A); OnRev(OUT_C); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(130); OnFwd(OUT_C); OnRev(OUT_A); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(280); OnFwd(OUT_C); OnRev(OUT_A); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); Wait(100); } //缶を避けてラインに戻る。 } } task follow_line() //ライントレースのプログラム { if ( SENSOR_1 > light ) { if ( SENSOR_3 > light ) { OnFwd(OUT_A+OUT_C); } else { OnFwd(OUT_A); OnRev(OUT_C); Wait(time); } } else { if ( SENSOR_3> light ) { OnRev (OUT_A); OnFwd(OUT_C); Wait(time); } } else { Off(OUT_A+OUT_C); Wait(20); OnFwd(OUT_A+OUT_C); Wait(20); } } *反省・感想 [#t03998f9] elseに嫌われた…。また、空き缶が軽すぎてタッチセンサーが反応しなくて困った。byむらかみ プログラムを考えるのが大変だった。タッチセンサーが反応しなかったためロボットを改造するのに苦労した。byすずき *コメント [#mbade809] コメントをどうぞ #comment