2009aへ戻る
目次
黒い線上を進むロボットの製作。
詳細は2009a/練習問題、課題2の項を参照。
課題2−1のプログラムをdaikiが担当、課題2−2のプログラムを俺が担当
全体
概要図
int SYOU; #define STOP_TIME 1500;//三周するまでの時間 task main() { SetSensor(SENSOR_2,SENSOR_TOUCH);//タッチセンサー2 SetSensor(SENSOR_1,SENSOR_LIGHT);//光センサー1 SetSensor(SENSOR_3,SENSOR_LIGHT);//光センサー3 SYOU = 0; ClearTimer(0); while (Timer(0)<STOP_TIME){//三周するまで続ける if(SENSOR_2==0){ if(SENSOR_1>40){ if(SENSOR_3>40){ OnFwd(OUT_A+OUT_C); } else{ OnFwd(OUT_A); Off(OUT_C); } }else{ OnFwd(OUT_C); Off(OUT_A); } if(SENSOR_1<40){ if(SENSOR_3<40){ OnFwd(OUT_A+OUT_C); } } }//センサー1と3で線を挟んで進むプログラム if(SENSOR_2==1){ if(SYOU==0){ OnRev(OUT_A+OUT_C); Wait(70);//パックから遠ざかる OnFwd(OUT_A); Wait(70); OnFwd(OUT_C); Wait(110);//パックを避けるため脱線 OnRev(OUT_A); Wait(70); OnFwd(OUT_A); Wait(250); OnRev(OUT_A); Wait(70); OnFwd(OUT_A); Wait(100); OnRev(OUT_C); Wait(85);//線路に戻る Off(OUT_A+OUT_C); }//1回目の衝突 if(SYOU==1){ OnRev(OUT_A+OUT_C); Wait(65);//パックから遠ざかる OnFwd(OUT_A); Wait(80); OnFwd(OUT_C); Wait(110);//パックを避けるため脱線 OnRev(OUT_A); Wait(75); OnFwd(OUT_A); Wait(250); OnRev(OUT_A); Wait(80); OnFwd(OUT_A); Wait(50); OnRev(OUT_C); Wait(85);//線路に戻る Off(OUT_A+OUT_C); }//2回目の衝突 if(SYOU==0){ SYOU = 1; }else{ SYOU = 0; } } } Off(OUT_A+OUT_C);//三周したら停止する }
俺のプログラム(別ページに飛びます)