標(biāo)題: 基于arduino的超聲波避障和循跡 [打印本頁]

作者: 用戶21111410    時間: 2021-8-21 19:34
標(biāo)題: 基于arduino的超聲波避障和循跡
前幾天搞了個arduino板,就動手做了個arduino避障小車。。下面是源碼有需要的自行提取。
  1. #define leftA_PIN 16
  2. #define leftB_PIN 17
  3. #define righA_PIN 18
  4. #define righB_PIN 19
  5. int PIN_1 = 4; //從車頭方向的最右邊開始排序
  6. int PIN_2 = 5;
  7. int PIN_3 = 6;
  8. int PIN_4 = 7;
  9. void forward( );          //前進(jìn)
  10. void back( );             //后退
  11. void turnLeftOrigin( );   //原地左
  12. void turnRightOrigin( );  //原地右
  13. void turnRightforword( ); //右前
  14. void turnLeftforword( );  //左前
  15. void turnLeftback( );     //左后
  16. void turnRightback( );    //右后
  17. void _stop();             //停車
  18. void setup()
  19. {

  20.    Serial.begin(9600); //串口波特率9600(手機端使用)
  21.   pinMode (leftA_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
  22.   pinMode (leftB_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
  23.   pinMode (righA_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
  24.   pinMode (righB_PIN, OUTPUT); //設(shè)置引腳為輸出引腳
  25.   pinMode (PIN_1, INPUT); //設(shè)置引腳為輸入引腳
  26.   pinMode (PIN_2, INPUT); //設(shè)置引腳為輸入引腳
  27.   pinMode (PIN_3, INPUT); //設(shè)置引腳為輸入引腳
  28. pinMode (PIN_4, INPUT); //設(shè)置引腳為輸入引腳
  29. }



  30. void loop(){
  31.   int data[4];
  32.   data[0] = digitalRead(4);
  33.   data[1] = digitalRead(5);
  34.   data[2] = digitalRead(6);
  35.   data[3] = digitalRead(7);
  36.   
  37.   if((data[0]==LOW) && (data[1]==LOW ) && (data[2]==LOW) && (data[2]==LOW) )
  38.   {
  39.         forward();
  40.   }
  41.   
  42.    if(((data[0]==HIGH) && (data[1]==LOW) && (data[2]==LOW) && (data[3]==LOW)) || ((data[0]==HIGH) && (data[1]==HIGH) && (data[2]==LOW)  && (data[3]==LOW)) )
  43.   {

  44.   turnLeftOrigin();
  45.    
  46.    }
  47.    if(((data[0]==LOW) && (data[1]==LOW) && (data[2]==HIGH)&& (data[3]==LOW)) || ((data[0]==LOW)&& (data[1]==LOW) && (data[2]==HIGH) && (data[3]==HIGH)) )
  48.   {
  49.   turnRightOrigin( );
  50.    }
  51.    
  52. }
  53.   
  54. /**************************************************
  55. forward子函數(shù)——前進(jìn)子函數(shù)
  56. 函數(shù)功能:控制車前進(jìn)
  57. **************************************************/
  58. void forward( )
  59. {
  60.   analogWrite(leftA_PIN,180);      
  61.   analogWrite(leftB_PIN,0);         //左輪前進(jìn)
  62.   analogWrite(righA_PIN,180);      
  63.   analogWrite(righB_PIN,0);         //右輪前進(jìn)
  64. }
  65. /**************************************************
  66. back子函數(shù)——后退子函數(shù)
  67. 函數(shù)功能:控制車后退
  68. **************************************************/
  69. void back( )
  70. {
  71.   analogWrite(leftA_PIN,0);      
  72.   analogWrite(leftB_PIN,180);        //左輪后退
  73.   analogWrite(righA_PIN,0);      
  74.   analogWrite(righB_PIN,180);        //右輪后退
  75. }
  76. /**************************************************
  77. turnLeftOrigin子函數(shù)——原地左轉(zhuǎn)子函數(shù)
  78. 函數(shù)功能:控制車原地左轉(zhuǎn)
  79. **************************************************/
  80. void turnLeftOrigin( )
  81. {
  82.   analogWrite(leftA_PIN,0);      
  83.   analogWrite(leftB_PIN,255);        //左輪后退
  84.   analogWrite(righA_PIN,255);      
  85.   analogWrite(righB_PIN,0);          //右輪前進(jìn)
  86. }
  87. /**************************************************
  88. turnRightOrigin子函數(shù)——原地右轉(zhuǎn)子函數(shù)
  89. 函數(shù)功能:控制車原地右轉(zhuǎn)
  90. **************************************************/
  91. void turnRightOrigin( )
  92. {
  93.   analogWrite(leftA_PIN,255);      
  94.   analogWrite(leftB_PIN,0);        //左輪前進(jìn)
  95.   analogWrite(righA_PIN,0);      
  96.   analogWrite(righB_PIN,255);      //右輪后退
  97. }
  98. /**************************************************
  99. turnRightforword子函數(shù)——右前運動子函數(shù)
  100. 函數(shù)功能:控制車右前
  101. **************************************************/
  102. void turnRightforword( )
  103. {
  104.   analogWrite(leftA_PIN,150);      
  105.   analogWrite(leftB_PIN,0);        //左輪快前進(jìn)
  106.   analogWrite(righA_PIN,128);      
  107.   analogWrite(righB_PIN,0);        //右輪慢前進(jìn)
  108. }
  109. /**************************************************
  110. turnLeftforword子函數(shù)——左前運動子函數(shù)
  111. 函數(shù)功能:控制車左前
  112. **************************************************/
  113. void turnLeftforword( )
  114. {
  115.   analogWrite(leftA_PIN,128);      
  116.   analogWrite(leftB_PIN,0);       //左輪慢前進(jìn)
  117.   analogWrite(righA_PIN,150);      
  118.   analogWrite(righB_PIN,0);       //右輪快前進(jìn)
  119. }
  120. /**************************************************
  121. turnRightforword子函數(shù)——右后運動子函數(shù)
  122. 函數(shù)功能:控制車右原地
  123. **************************************************/
  124. void turnRightback( )
  125. {
  126.   analogWrite(leftA_PIN,255);      
  127.   analogWrite(leftB_PIN,0);        //左輪慢前進(jìn)
  128.   analogWrite(righA_PIN,0);      
  129.   analogWrite(righB_PIN,0);        //右輪停止
  130. }
  131. /**************************************************
  132. turnLeftforword子函數(shù)——左后運動子函數(shù)
  133. 函數(shù)功能:控制車左原地
  134. **************************************************/
  135. void turnLeftback( )
  136. {
  137.   analogWrite(leftA_PIN,0);      
  138.   analogWrite(leftB_PIN,0);        //左輪停止
  139.   analogWrite(righA_PIN,255);      
  140.   analogWrite(righB_PIN,0);        //右輪慢前進(jìn)
  141. }
  142. /**************************************************
  143. stop子函數(shù)—停止子函數(shù)
  144. 函數(shù)功能:控制車停止
  145. **************************************************/
  146. void _stop( )
  147. {
  148.   analogWrite(leftA_PIN,0);      
  149.   analogWrite(leftB_PIN,0);         //左輪靜止不動
  150.   analogWrite(righA_PIN,0);      
  151.   analogWrite(righB_PIN,0);         //右輪靜止不動
  152. }
復(fù)制代碼


作者: 用戶21111410    時間: 2021-8-21 19:35
第一次寫稿沒有什么經(jīng)驗希望大家可以提出寶貴意見。
作者: glinfei    時間: 2021-8-23 10:15
是不是經(jīng)常出軌?而且把四個紅外當(dāng)兩個用了,處理不了直角彎啊。
作者: 用戶21111410    時間: 2021-8-23 16:24
不會呀,我感覺四個更穩(wěn)定些。。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1