查看: 447|回复: 0

[未解决] arduino双线循迹四个传感器

[复制链接]
  • TA的每日心情
    开心
    2018-5-29 13:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2018-7-12 19:11 | 显示全部楼层 |阅读模式
    //#include <Servo.h>
    int Left_motor_go=8;     //左电机前进(IN1)
    int Left_motor_back=9;     //左电机后退(IN2)
    int Right_motor_go=10;    // 右电机前进(IN3)
    int Right_motor_back=11;    // 右电机后退(IN4)
    const int SensorRight = 3;     //右循迹红外传感器(P3.2OUT1)
    const int SensorLeft = 5;       //左循迹红外传感器(P3.3OUT2)
    const int SensorRight2 = 6;
    const int SensorLeft2 = 7;
    int SL;   //左循迹红外传感器状态
    int SR;   //右循迹红外传感器状态
    int SR2;//右外侧传感器
    int SL2;//左外侧传感器
    void setup()
    {
      //初始化电机驱动IO为输出方式
    pinMode(Left_motor_go,OUTPUT); // PIN 8 (PWM)
    pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM)
    pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM)
    pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM)
    //pinMode(key,INPUT);//定义按键接口为输入接口
    //pinMode(beep,OUTPUT);
    pinMode(SensorRight, INPUT); //定义右循迹红外传感器为输入
    pinMode(SensorLeft, INPUT); //定义左循迹红外传感器为输入
    pinMode(SensorRight2, INPUT);
    pinMode(SensorLeft2, INPUT);
    }
    //void run(int time)     // 前进
    void run()
    {
      digitalWrite(Right_motor_go,HIGH); // 右电机前进
    digitalWrite(Right_motor_back,LOW);   
    analogWrite(Right_motor_go,20);//PWM比例0~255调速,左右轮差异略增减
    analogWrite(Right_motor_back,0);
    digitalWrite(Left_motor_go,LOW); // 左电机前进
    digitalWrite(Left_motor_back,HIGH);
    analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
    analogWrite(Left_motor_back,20);
    //delay(time * 100);   //执行时间,可以调整  
    }
    //void brake(int time)  //刹车,停车
    void brake()
    {
    digitalWrite(Right_motor_go,LOW);
    digitalWrite(Right_motor_back,LOW);
    digitalWrite(Left_motor_go,LOW);
    digitalWrite(Left_motor_back,LOW);
    //delay(time * 100);//执行时间,可以调整  
    }
    //void left(int time)         //左转(左轮不动,右轮前进)
    void left()
    {
    digitalWrite(Right_motor_go,HIGH); // 右电机前进
    digitalWrite(Right_motor_back,LOW);
    digitalWrite(Left_motor_go,HIGH);   //左轮后退
    digitalWrite(Left_motor_back,LOW);
       analogWrite(Right_motor_go,150);//PWM比例0~255调速,左右轮差异略增减
    analogWrite(Right_motor_back,0);
      analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减
    analogWrite(Left_motor_back,150);
    }
    //void right(int time)        //右转(右轮不动,左轮前进)
    void right()
    {
    digitalWrite(Right_motor_go,LOW);  //右电机后退
    digitalWrite(Right_motor_back,HIGH);
    analogWrite(Right_motor_go,0);
    analogWrite(Right_motor_back,250);//PWM比例0~255调速
    digitalWrite(Left_motor_go,LOW);//左电机前进
    digitalWrite(Left_motor_back,HIGH);
      analogWrite(Left_motor_go,0);
    analogWrite(Left_motor_back,150);//PWM比例0~255调速
      
    }
    //==========================================================
    void loop()
    {
      
    while(SR2 ==HIGH&&SL2==HIGH)//在单线上
      {
      SR= digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L1亮;没信号表明压在黑线上,车子底板上L1灭
      SL= digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭
      SR2 = digitalRead(SensorRight2);
      SL2 = digitalRead(SensorLeft2);
      //有信号为LOW  没有信号为HIGH
      if(SL == LOW&&SR==LOW)
      run();   //都亮,前进,都是LOW
    else if (SL == HIGH & SR == LOW)// 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转
       left();
    else if (SR == HIGH & SL == LOW) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转  
      right();
    else// 都是白色, 停止
    run();//都是亮,前进,都是HIGH
      }
    while(SR2 ==LOW&&SL2==LOW)//在双线上
    {
    SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L1亮;没信号表明压在黑线上,车子底板上L1灭
      SL= digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭
      SR2 = digitalRead(SensorRight2);
      SL2 = digitalRead(SensorLeft2);
    if(SR2 ==LOW&SL2==LOW)
    run();
    else if(SR2 ==HIGH)
      left();
    else if(SL2 ==HIGH)
    right();
    }
    }
    单线循迹两个传感器是可以跑的,但是加了SR2 SL2之后发现它就一直前进根本没有左转和右转,请多多指教

    赛道

    赛道

    小车

    小车

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

    本版积分规则

    热门推荐

    IDE 用arbuBlok下载不了程序。
    IDE 用arbuBlok下载不了程
    点击下载到板子就出现红字体 版本是1.8.7
    初学arduino求助
    初学arduino求助
    大佬们,我想问一下,我现在想做一个程序:按下开关持续时间t,延迟7.77t后点亮led0.
    吸顶灯接入物联网(基于Blinker与wifi开发板)
    吸顶灯接入物联网(基于Bli
    暑假开始接触Blinker和esp8266开发板,一直在捣鼓。。开学是肯定没空碰了,于是趁现在
    原创 drawbot平面关节机械臂 教程直播贴
    原创 drawbot平面关节机械
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太懒,一直没来得及
    创客集结号之光控LED实验
    创客集结号之光控LED实验
    本次实验是在创客集结号上分享出来的,是做一个光控LED实验。 1.实验器件: Arduino
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表