找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2234|回复: 1
打印 上一主题 下一主题
收起左侧

arduino红外避障程序

[复制链接]
跳转到指定楼层
楼主
ID:907658 发表于 2021-4-18 08:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个关于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.   }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表