2005/B4
課題4(光の方について行くプログラム(試作))†
//課題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(光の方について行くプログラム(改良))†
//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);//前進
}
}
}
- 改良前のとちがうのはWaitをいれて刻んでる所です。
- センサーが反応してなければひたすら左回りなので少し遅い。
- ロボは前タイヤを大きくしてセンサーが光を感知しやすくした。