[[2006a/C3]]

 #define Do 523
 #define Re 587
 #define Mi 659
 #define Fa 698
 #define So 784
 #define Ra 880 
 task play_music()
 {
    while (true)
    {
        PlayTone(Do,30); Wait(40);
        PlayTone(Do,30); Wait(40);
        PlayTone(So,30); Wait(40);
        PlayTone(So,30); Wait(40);
        PlayTone(Ra,30); Wait(40);
        PlayTone(Ra,30); Wait(40);
        PlayTone(So,70); Wait(80);
        PlayTone(Fa,30); Wait(40);
        PlayTone(Fa,30); Wait(40);
        PlayTone(Mi,30); Wait(40);
        PlayTone(Mi,30); Wait(40);
        PlayTone(Re,30); Wait(40);
        PlayTone(Re,30); Wait(40);
        PlayTone(Do,70); Wait(80);        
    }
 } 
 #define turn_right OnFwd(OUT_A);OnRev(OUT_C); 
 #define turn_left OnRev(OUT_A);OnFwd(OUT_C);
 #define go_straight OnFwd(OUT_A+OUT_C);Wait(10);
 task main()
 {
    SetSensor(SENSOR_1,SENSOR_LIGHT);
    SetSensor(SENSOR_3,SENSOR_LIGHT);
    while(true){
       if(SENSOR_1>=40&&SENSOR_3>=40){
           stop play_music;
           go_straight;
           }
       if(SENSOR_1<40&&SENSOR_3>=40&&SENSOR_1<SENSOR_3){ 
           stop play_music;
           turn_right;
           }
       if(SENSOR_1>=40&&SENSOR_3<40&&SENSOR_1>SENSOR_3){
           stop play_music;
           turn_left;
           }
       if(SENSOR_1<40&&SENSOR_3<40){
           turn_right;
           start play_music;
           }    
    }    
 }
 }




 #define blackline 40
 int frag;
 int step;
 sub linetrace (){
  if ((SENSOR_1<=blackline)&&(SENSOR_3>=blackline)){
    OnFwd (OUT_C);OnRev (OUT_A);
  }
  if ((SENSOR_1>=blackline)&&(SENSOR_3<=blackline)){
    OnFwd (OUT_A);OnRev (OUT_C);
  }
  if ((SENSOR_1<=blackline)&&(SENSOR_3<=blackline)){
    frag++;
    OnFwd (OUT_A+OUT_C); Wait(010);
  }
  if ((SENSOR_1>=blackline)&&(SENSOR_3>=blackline)){
     OnFwd (OUT_A+OUT_C);
  }
 }
 sub go_straight (){
  OnFwd (OUT_A+OUT_C);
 }
 sub go_back (){
  OnRev (OUT_A+OUT_C);
 }
 sub turn_R (){
  OnFwd (OUT_A+OUT_C);Wait(025);
  OnRev (OUT_C);Wait(040);Off(OUT_A+OUT_C);
 }
 sub turn_L (){
  OnFwd (OUT_C+OUT_A);Wait(025);
  OnRev (OUT_A);Wait(040);Off(OUT_A+OUT_C);
 }
 sub hold_can()
 {
  OnFwd(OUT_B);Wait(200);Off(OUT_B);
 }  
 sub part_can()
 {
 OnRev(OUT_B);Wait(300);Off(OUT_B);
 }
 task main(){
  SetSensor (SENSOR_1, SENSOR_LIGHT);
  SetSensor (SENSOR_3, SENSOR_LIGHT);
  frag=0;
  step=1;
  while (true){
  
     Wait(500);
     hold_can();
     if (step==1){
        Wait(050);
        go_back ();
        turn_R ();
        step=2;
      }
      if (step==2){
        linetrace ();
        if (frag==5){
          frag=6;
          turn_L ();
          step=3;
        }
      }
      if (step==3){
        linetrace ();
        if (frag==7){
          OnFwd(OUT_A+OUT_C);Wait(50);
          part_can();
          OnFwd(OUT_A+OUT_C);Wait(50);
          frag=8;
          step=4;
         }
         }
        if(step==4){
          OnRev(OUT_A+OUT_C);Wait(100);
          if (frag==9){
            turn_L ();
            frag=10;
            step=5; 
        }
        }
        if(step==5){
            linetrace();
            if(frag==12){
            turn_R();
            frag=13;
            step=6;
            }
            }
       if(step==6){
            linetrace();
            if(frag==13){
            go_straight();Wait(50);
            frag=14;
            step=7;
           }
           }
         if(step==7){
            step=1;
            frag=0;
         }  
           
          
    }
  }

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS