*目次 [#jefb00fb] #contents *課題 [#o97581ef] -(1)黒いライン上から外れることなく、ライン上の牛乳パックをよけて進め! -(2)黒いライン上から外れることなく、ある交差点上にある牛乳パックを次の交差点に運び進め! -(3)黒いライン上から外れることなく、最初の交差点では右、次の交差点では左...のように進め! 以上のようなプログラミングを作成せよ!! By Boss松本 *コースの紹介 [#w0d5b93f] 僕たちのコースの特徴は以下の3点です。 -(1)曲がり角の角度が急である #ref(090616_1900~0003.jpg) -(2)交差点が2つある #ref(090616_1900~0002.jpg) -(3)コースがシンプルである #ref(090616_1900~0001.jpg) *ロボットの紹介 [#x5377f26] -足部 タイヤを小さくすることによって、全体的に見た目をよくし、小回りを聞くようにしました。こうすることによって、コースの特徴(1)にあげた「曲がり角の角度が急である」ということを難なくこなすロボットに仕上げました。 #ref(090616_1736~0001.jpg) -タッチセンサー部 #ref(090612_1949~0001.jpg) 上にある写真のように初めは作りました。しかし、真中にきちんと当たった場合にしかタッチセンサーが反応せず、牛乳パックが軽すぎるせいもあり、このスタイルはボツにせざるをえませんでした。 -光センサー部 はじめは、光センサーの幅を広くし過ぎうまくプログラミングができませんでした。そこで、今度は二つの光センサーをくっつけ他ものを作成したが、これもうまくいかず...試行錯誤の結果、写真の幅にたどり着き、プログラムもなんとかうまくいきました。 #ref(090616_1737~0001.jpg) *プログラミングの紹介 [#h36edba7] -課題2-(1) #define T 40 #define Run_time 5000 #define a OUT_A #define c OUT_C task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); ClearTimer(0); while(Timer(0) <= Run_time){ if(SENSOR_1>T){ if(SENSOR_3>T){ OnFwd(a+c); } else{ if(SENSOR_1>T){ OnFwd(a); OnRev(c); } } } else{ if(SENSOR_3>T){ OnFwd(c); OnRev(a); } else{ Off(a+c); Wait(100); OnFwd(a+c); Wait(40); } if(SENSOR_2 == 1){ Off(a+c);Wait(50); OnRev(a+c) ; Wait(80); Off(a+c);Wait(50); OnFwd(a); OnRev(c); Wait(120); OnFwd(a+c); Wait(140); OnFwd(c); OnRev(a); Wait(120); OnFwd(a+c); Wait(340); OnFwd(c); OnRev(a); Wait(120); OnFwd(a+c); Wait(140); OnFwd(a); OnRev(c); Wait(120); } } } Off(a+c); } -課題2-(2) #define T 40 #define Run_time 5000 #define a OUT_A #define c OUT_C task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); ClearTimer(0); while(Timer(0) <= Run_time){ if(SENSOR_1>T){ if(SENSOR_3>T){ OnFwd(a+c); } else{ if(SENSOR_1>T){ OnFwd(a); OnRev(c); } } } else{ if(SENSOR_3>T){ OnFwd(c); OnRev(a); } else{ Off(a+c); Wait(100); OnFwd(a+c); Wait(40); } if(SENSOR_2 == 1){ Off(a+c);Wait(50); OnFwd(a+c); Wait(500); OnFwd(a); OnRev(c); Wait(300); OnRev(a+c); Wait(180); OnFwd(a); Off(c); Wait(430); Off(a+c);Wait(50); } } } Off(a+c); } -課題2-(3) #define T 40 #define Run_time 5000 #define a OUT_A #define c OUT_C int flag = 0; task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); SetSensor(SENSOR_3,SENSOR_LIGHT); ClearTimer(0); while(Timer(0) <= Run_time){ if(SENSOR_1>T){ if(SENSOR_3>T){ OnFwd(a+c); } else{ if(SENSOR_1>T){ OnFwd(a); OnRev(c); } } } else{ if(SENSOR_3>T){ OnFwd(c); OnRev(a); } else{ if((SENSOR_1<T)&&(SENSOR_3<T)){ Wait(100); OnFwd(a+c); Wait(40); OnFwd(c); OnRev(a); Wait(115); FastTimer(1); if((FastTimer(1)>2000)&&(SENSOR_1<T)&&(SENSOR_3<T)){ OnFwd(a+c); Wait(40); OnFwd(a); OnRev(c); Wait(115); FastTimer(1); } } if(SENSOR_2 == 1){ Off(a+c); Wait(50); OnRev(a+c) ; Wait(100); Off(a+c); Wait(50); } } } Off(a+c); } } *工夫や頑張った点 [#a4200492] *感想 [#i3755bd6]