2009a/A7/課題2左

Fe2+ページ

プログラム

#define T 40//閾値を40に定義
#define a OUT_A                   
#define c OUT_C                  
#define s1 SENSOR_1
#define s2 SENSOR_2
#define s3 SENSOR_3
int t = 0;
#define fwd(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define rev(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define w(t) Wait(t);
task main()
{
SetSensor(SENSOR_2,SENSOR_TOUCH);//センサー2のタッチセンサーにセット 
SetSensor(s1,SENSOR_LIGHT);//  センサー1を光センサーにセット
SetSensor(s3,SENSOR_LIGHT);//センサー3を光センサーにセット
while(t<=20){//カウントが20になるまでこの動作を繰りかえす
if((t==2)||(t==9)||(t==12)){//もしカウントガ2、9、12のとき
Wait(100);//1秒待って
OnFwd(a+c);//牛乳パックを迂回
Wait(100);
OnFwd(a);
OnRev(c);
Wait(105);
OnFwd(a+c);
w(280);
OnFwd(a);
OnRev(c);
w(105);
OnFwd(a+c);
w(300);
OnFwd(a);
OnRev(c);
w(105);
OnFwd(a+c);
w(180);
Off(a+c);
t++;//カウントを1追加
}
if((t==6)||(t==14)||(t==19)){カウントが6、14、19の時
Wait(100);//1秒待って
OnFwd(a+c);Wait(50);
OnFwd(a+c);
Wait(50);
OnFwd(c);
OnRev(a);
Wait(105);
OnFwd(a+c);
w(155);
OnFwd(a);
OnRev(c);
w(105);
OnFwd(a+c);
w(300);
OnFwd(a);
OnRev(c);
w(105);
OnFwd(a+c);
w(320);
Off(a+c);
 t++;//カウントを1追加
}
if(s1>T){//センサー1が定義した閾値より高く                    
if(s3>T){//センサー3が定義した閾値より高いとき
OnFwd(a+c);//前進する
} 
else{
if(s1>T){//センサー1だけが定義した閾値より高いとき
OnFwd(a);//右に曲がる
OnRev(c);
Wait(5);
Off(OUT_C+OUT_A);
} 
}
}
else{
if(s3>T){//センサー3だけ定義した閾値より高いとき
OnFwd(c);//左に曲がる
OnRev(a);
Wait(5);
Off(a+c);
} 
else{//センサー1と3がともに定義した閾値より低いとき
t++;//カウントを1追加して
Off(a+c);//少し停止して                      
Wait(50);
OnFwd(a+c);//前進
Wait(30);
} 
}    
}
}

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-07-06 (月) 23:27:15