标题: arduino红外避障程序 [打印本页]

作者: haoxiaozi1    时间: 2021-4-18 08:48
标题: arduino红外避障程序
这是一个关于arduino红外避障的程序
  1. #define L_hw A0 //左红外
  2. #define R_hw A1 //右红外
  3. #define motor_A1 7
  4. #define motor_A2 8
  5. #define motor_A  9
  6. #define motor_B1 6
  7. #define motor_B2 5
  8. #define motor_B  3
  9. void setup() {
  10.   pinMode(L_hw,INPUT);
  11.   pinMode(R_hw,INPUT);
  12.   pinMode(motor_A1,OUTPUT);
  13.   pinMode(motor_A2,OUTPUT);
  14.   pinMode(motor_A,OUTPUT);
  15.   pinMode(motor_B1,OUTPUT);
  16.   pinMode(motor_B2,OUTPUT);
  17.   pinMode(motor_B,OUTPUT);
  18.   Serial.begin(9600);        // 初始化串口
  19. }

  20. void loop() {

  21.    bizhang();  //红外避障子程序
  22.    }

  23. void qianjin(){
  24.   digitalWrite(motor_A1,1);
  25.   digitalWrite(motor_A2,0);
  26.   analogWrite(motor_A,100); //PWM
  27.   digitalWrite(motor_B1,1);
  28.   digitalWrite(motor_B2,0);
  29.   analogWrite(motor_B,100); //PWM
  30.    }
  31. void houtui(){
  32.   digitalWrite(motor_A1,0);
  33.   digitalWrite(motor_A2,1);
  34.   analogWrite(motor_A,100); //PWM
  35.   digitalWrite(motor_B1,0);
  36.   digitalWrite(motor_B2,1);
  37.   analogWrite(motor_B,100); //PWM
  38.     }
  39. void zuozhuan(){
  40.   digitalWrite(motor_A1,0);
  41.   digitalWrite(motor_A2,1);
  42.   analogWrite(motor_A,100); //PWM
  43.   digitalWrite(motor_B1,1);
  44.   digitalWrite(motor_B2,0);
  45.   analogWrite(motor_B,100); //PWM
  46.    }
  47. void youzhuan(){
  48.   digitalWrite(motor_A1,1);
  49.   digitalWrite(motor_A2,0);
  50.   analogWrite(motor_A,100); //PWM
  51.   digitalWrite(motor_B1,0);
  52.   digitalWrite(motor_B2,1);
  53.   analogWrite(motor_B,100); //PWM
  54.    }
  55. void bizhang(){ //避障
  56.    if(digitalRead(L_hw)==1&&digitalRead(R_hw)==1){
  57.     qianjin();
  58.         }
  59.     else if(digitalRead(L_hw)==1&&digitalRead(R_hw)==0){
  60.       zuozhuan();
  61.             }  
  62.      else if(digitalRead(L_hw)==0&&digitalRead(R_hw)==1){
  63.       youzhuan();
  64.             }  
  65.     else if(digitalRead(L_hw)==0&&digitalRead(R_hw)==0){
  66.       houtui();
  67.       delay(2000);
  68.       zuozhuan();
  69.       delay(500);
  70.             }
  71.     else{
  72.       houtui();
  73.         }
  74.   }
复制代码



作者: glinfei    时间: 2021-4-19 23:46
  else if(digitalRead(L_hw)==1&&digitalRead(R_hw)==0){       zuozhuan(); 写反了吧?右边检测轨迹线,怎么还左转了?就算没反,类似的写法,我在四个电机的小车试过了,基本没法用。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1