[[2005/B4]] #contents * 課題4(光の方について行くプログラム(試作)) [#q71b8ef2] //課題4(光の方について行くプログラム(試作)) // // #define THRESHOLD 40 task main(){ int max_right,time_max; SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true){ if(SENSOR_1>THRESHOLD&&SENSOR_3<THRESHOLD){ OnFwd(OUT_C); } if(SENSOR_1<THRESHOLD&&SENSOR_3>THRESHOLD){ OnFwd(OUT_A); } if(SENSOR_1<THRESHOLD&&SENSOR_3<THRESHOLD){ OnFwd(OUT_A); } if(SENSOR_1>THRESHOLD&&SENSOR_3<THRESHOLD){ OnFwd(OUT_A+OUT_C); } } -普通の所より明るいを見つけて進むプログラム -とりあえず失敗しましたがここから改良です。 -ぶっちゃけタッチセンサーの光バージョン。 -(このプログラムはWaitがないので動かなかった模様、原因が分かったので -一応記述します。) * 課題4(光の方について行くプログラム(改良)) [#o3425963] //right_trace // 作成者 やらー&すなお&satoshi // #define THRESHOLD 40 task main(){ SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); while(true){ if(SENSOR_1>THRESHOLD&&SENSOR_3<THRESHOLD){//左のセンサーのみ感知 OnFwd(OUT_C);//左回転 OnRev(OUT_A); Wait(10); } if(SENSOR_1<THRESHOLD&&SENSOR_3>THRESHOLD){//右のセンサーのみ感知 OnFwd(OUT_A);//右回転 OnRev(OUT_C); Wait(10); } if(SENSOR_1<THRESHOLD&&SENSOR_3<THRESHOLD){//両方感知してなかったら while(SENSOR_1<THRESHOLD||SENSOR_3<THRESHOLD){//どちらかが反応するまで OnFwd(OUT_C);//左回転 OnRev(OUT_A); Wait(10); until(SENSOR_1>THRESHOLD||SENSOR_3>THRESHOLD);//もしかしたらいらないかも… } } if(SENSOR_1>THRESHOLD&&SENSOR_3>THRESHOLD){//両方感知していたら OnFwd(OUT_A+OUT_C);//前進 } } } #ref(2005/B4/課題4左/060110_2328~02.jpg,ライトトレース1) #ref(2005/B4/課題4左/060110_2328~01.jpg,ライトトレース2) -改良前のとちがうのはWaitをいれて刻んでる所です。 -センサーが反応してなければひたすら左回りなので少し遅い。 -ロボは前タイヤを大きくしてセンサーが光を感知しやすくした。 #comment