daily pastebin goal
86%
SHARE
TWEET

Untitled

a guest May 20th, 2018 96 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //匯入
  2.  
  3. #include <Arduino.h>
  4. #include <Wire.h>
  5. #include <SoftwareSerial.h>
  6. #include <MeMCore.h>
  7.  
  8. //自訂參數
  9. MBotDCMotor motor_left(9);
  10. MBotDCMotor motor_right(10);
  11. MeLineFollower IF1(2);    // ss1 ss2
  12. MeLineFollower IF2(1);    // ss3
  13. MeLineFollower IF3(4);    // ss4 ss5
  14. MeUltrasonicSensor UTS(3);//超音波
  15. MeBuzzer buzzer; //嗡鳴器
  16. byte ReturnIF1;
  17. byte ReturnIF2;
  18. byte ReturnIF3;
  19. int buttom;
  20. int distance;   //設定一個參數為distance
  21. bool times = false;       //設定一個是否值
  22. const int Ttimes = 3;      //目標計算次數
  23. bool times2 = false;       //設定一個是否值
  24. const int Ttimes2 = 3;      //設定計算次數
  25. bool times3 = false;       //設定一個是否值
  26. const int Ttimes3 = 3;      //設定計算次數
  27. void setup()
  28. {
  29.   Serial.begin(115200);     //串列阜(之後要刪除)
  30.   buzzer.tone(262,200);
  31.   buzzer.tone(294,200);
  32.   buzzer.tone(330,200);    //輸出已開機訊號
  33.   }
  34. void loop()
  35. {
  36.   buttom=analogRead(A7);         //設定buttom為板載按鈕
  37.   ReturnIF1=IF1.readSensors();
  38.   ReturnIF2=IF2.readSensors();
  39.   ReturnIF3=IF3.readSensors();   //設定五路的感測資料位置
  40.   distance=UTS.distanceCm();     //令超音波資料為distance
  41.   int Atimes = 0;
  42.   int Atimes2 = 0;
  43.   int Atimes3 = 0;
  44.   Serial.println(distance);       //串列阜(之後要刪除)
  45.  
  46.    if(buttom<10){                //按鈕按下去後執行
  47.  
  48.    if(distance >= 5){          //距離小於5cm
  49.     Serial.println("closer");     //輸出距離太小(之後要刪除)
  50.     motor_left.run(255);
  51.     motor_right.run(-255);
  52.     delay(200);   //後退
  53.     motor_left.run(-55);
  54.     motor_right.run(255);
  55.     delay(500);    //左轉
  56.     motor_left.run(-255);
  57.     motor_right.run(255);
  58.     delay(200);    //前進
  59.     motor_left.run(-255);
  60.     motor_right.run(55);
  61.     delay(700);    //右轉
  62.     motor_left.run(-255);
  63.     motor_right.run(255);
  64.     delay(150);    //接線時請調150,鋰電池時請調250(前進)
  65.     motor_left.run(255);
  66.     motor_right.run(0);
  67.     delay(680);    //回復路線
  68.     }else{
  69.     Serial.println("far");                 //輸出距離太遠(之後要刪除)
  70.  
  71.  
  72.     if(times){          
  73.     times = true;       //開始計算
  74.     while(Atimes <Ttimes){        //計算次數(次數(0~3)<目標次數)
  75.     if (ReturnIF1==0 && ReturnIF2==0 && ReturnIF3==0) // 全感黑
  76.    
  77.      {  
  78.        break;       //就跳出
  79.      }
  80.      else
  81.      {
  82.         motor_left.run(-255);   //直走
  83.         motor_right.run(255);
  84.         delay(20);              //0.02毫秒(未測試)
  85.         Atimes++;               //次數+1
  86.       }
  87.       }
  88.  
  89.       if(Atimes == Ttimes){     //次數=目標次數
  90.         while(ReturnIF1!=0 && ReturnIF2!=0 && ReturnIF3!=0) //假如是白
  91.         {
  92.           motor_left.run(-255);
  93.           motor_right.run(255);
  94.          //直走
  95.           }
  96.       }
  97.     times = false;       //結束計算
  98.     }
  99.  
  100.  
  101.  
  102.     if(times2){          
  103.     times2 = true;       //開始計算
  104.     while(Atimes2 <Ttimes2){        //計算次數(次數(0~3)<目標次數)
  105.     if (ReturnIF1!=0 && ReturnIF2!=0 && ReturnIF3!=0) // 全感白
  106.    
  107.      {  
  108.        break;       //就跳出
  109.      }
  110.      else
  111.      {
  112.         motor_left.run(-255);   //直走
  113.         motor_right.run(255);
  114.         delay(20);              //0.02毫秒(未測試)
  115.         Atimes2++;               //次數+1
  116.       }
  117.       }
  118.  
  119.       if(Atimes2 == Ttimes2){     //次數=目標次數
  120.         while(ReturnIF1==0 && ReturnIF2==0 && ReturnIF3==0) //假如是黑
  121.         {
  122.           motor_left.run(-255);
  123.           motor_right.run(255);
  124.          //直走
  125.           }
  126.       }
  127.     times2 = false;       //結束計算
  128.     }
  129.  
  130.  
  131.    
  132.    
  133.     //以下為新型循線
  134.     // ==0 = 黑  !=0 = 白
  135.     if(ReturnIF1!=0 && ReturnIF2==0 && ReturnIF3!=0)        //ss3感黑 其他感白
  136.       {  
  137.         //白黑白
  138.          motor_left.run(-255);
  139.          motor_right.run(255);
  140.          //直走
  141.       }
  142.      else if (ReturnIF1==0 && ReturnIF2!=0 && ReturnIF3!=0) // 一二路感黑 其他感白
  143.      {  
  144.          //黑白白
  145.          motor_left.run(0);
  146.          motor_right.run(255);
  147.          //往左 (未測試)
  148.       }
  149.       else if (ReturnIF1==0 && ReturnIF2==0 && ReturnIF3!=0) // 四五路感白 其他感黑
  150.      {  
  151.          //黑黑白
  152.          motor_left.run(-255);
  153.          motor_right.run(0);
  154.          //往右(未測試)
  155.       }
  156.       else if (ReturnIF1!=0 && ReturnIF2!=0 && ReturnIF3==0) // 四五路感黑 其他感白
  157.      {
  158.          //白白黑
  159.          motor_left.run(0);
  160.          motor_right.run(255);
  161.          //往左 (未測試)
  162.       }
  163.       else if (ReturnIF1!=0 && ReturnIF2==0 && ReturnIF3==0) // 一二路感白 其他感黑
  164.      {  
  165.          //白黑黑
  166.          motor_left.run(-255);
  167.          motor_right.run(0);
  168.          //往右(未測試)
  169.       };
  170.       }
  171.     }
  172.     };
  173.   //以上為超音波感測器
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top