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

*プログラム [#r0c24bab]
 #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 flag = 0;
 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()
 {
 task main(){
 SetSensor(SENSOR_2,SENSOR_TOUCH); //センサー2をセット
 start light;//ライトセンサーのプログラム開始                      
 while(true){
 if((s2 == 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; ライントレースを開始する
      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;} //そして光センサーのタスクを開始する
 }
 else{ 
 if(SENSOR_2 == 1){ //もしセンサー2が反応したら
 stop light; //光センサーのタスクを停止して
 ClearTimer(0); //タイマーを開始して                       
 Off(OUT_A+OUT_C);Wait(50); //少し後ろに進んで
 OnRev(OUT_A+OUT_C); Wait(100);   //また少し前に進む
 Off(OUT_A+OUT_C);Wait(50);        
 start light; //そして光センサーのタスクを開始する
 }                      
 }
 }
 }
 task light()//ライトセンサーのプログラム
 {
 OnFwd(OUT_A+OUT_C);                              
 SetSensor(s1,SENSOR_LIGHT);センサー1を光センサーにセット  
 SetSensor(s3,SENSOR_LIGHT);センサー3を光センサーにセット
 task light(){//ライトセンサーのプログラム                              
 SetSensor(SENSOR_1,SENSOR_LIGHT);センサー1を光センサーにセット  
 SetSensor(SENSOR_3,SENSOR_LIGHT);センサー3を光センサーにセット
 ClearTimer(0);タイマー開始
 while(flag < 9){      
 if(s1>T){ //もしセンサー1が                   
 if(s3>T){ //もしセンサー3が
 OnFwd(c); //ともに定義した閾値より高いとき
 OnFwd(a); 前進
               }
 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が定義した閾値より両方低いとき、
 flag++; //カウントを1プラスして
 Off(a+c);                    
 Wait(100); //1秒間止まる
 OnFwd(c); //そして交差点を通過する
 OnFwd(a);
 Wait(30);
     }
               }
      }
                }
      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