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

*プログラム [#r0c24bab]
 #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が反応したら
      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