2009a/A7/課題2左 Hauntページ

プログラム

#define T 40//閾値を40に定義
#define a OUT_A                   
#define c OUT_C                  
int flag = 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をセット
start light;//ライトセンサーのプログラム開始                      
while(true){
     if((SENSOR_2 == 1)&&(FastTimer(0)<400)){ //もしセンサー2が反応してすぐ4秒以内にまたセンサー2が反応したら
     stop light;fwd(100);OnFwd(OUT_A);OnRev(OUT_C);Wait(160);rev(50);OnFwd(c);OnRev(a);w(100);rev(20)//そ牛乳パックを持ってのその場で回転する
     start light;} ライントレースを開始する
     else{ if(SENSOR_2 == 1){ //もしセンサー2が反応したら
     stop light; //光センサーのタスクを停止して
     ClearTimer(0); //タイマーを開始して                       
     Off(a+c);Wait(50); //少し後ろに進んで
     OnRev(a+c); Wait(100);Off(a+c)   //また少し前に進む        
     start light;} //そして光センサーのタスクを開始する
}
}
}
task light(){//ライトセンサーのプログラム                              
SetSensor(SENSOR_1,SENSOR_LIGHT);センサー1を光センサーにセット  
SetSensor(SENSOR_3,SENSOR_LIGHT);センサー3を光センサーにセット
ClearTimer(0);タイマー開始
     while(flag < 9){      
     if(SENSOR_1>T){ //もしセンサー1が                   
     if(SENSOR_3>T){ //もしセンサー3が
     OnFwd(c); //ともに定義した閾値より高いとき
     OnFwd(a);}//前進
     else{
     if(SENSOR_1>T){  //もしセンサー1だけが定義した閾値より高いとき                  
     OnFwd(a);OnRev(c);Wait(5);Off(OUT_C+OUT_A);} //右に進む
}
}
     else{
     if(SENSOR_3>T){ //もしセンサー3だけが定義した閾値より高いとき                   
     OnFwd(c);OnRev(a);Wait(5);Off(a+c);}//左に進む
     else{ //もしセンサー1と3が定義した閾値より両方低いとき、
     flag++; //カウントを1プラスして
     Off(a+c);Wait(100); //1秒間止まる
     fwdt(30);}//そして交差点を通過する
}
}
}
}

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