查看: 218|回复: 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之后发现它就一直前进根本没有左转和右转,请多多指教

    赛道

    赛道

    小车

    小车

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

    本版积分规则

    热门推荐

    小米5s安装blinker,WIFIduino试用。
    小米5s安装blinker,WIFIdu
    openjumper搞活动,原价79元的WIFIduino板子现在售29元,需要写帖子才能有这个优惠。
    esp8266上传项目出错
    esp8266上传项目出错
    esp8266ex。 烧录简单的示例程序,WiFiScan、blink等,都可以成功上传。 但是过长的程
    零知开源小项目-Bad Apple 零知版本
    零知开源小项目-Bad Apple
    原文:零知开源小项目-Bad Apple 零知版本http://www.lingzhilab.com/forum. ... d&ti
    求助光电开关的使用方法
    求助光电开关的使用方法
    如图中的光电开关(光电传感器),目前只知道黑色线接信号,棕色线接正极,蓝色线接负
    SpiderRobot 蜘蛛
    SpiderRobot 蜘蛛
    关于SpiderRobot 项目实行方案 之前有人推荐我做这个项目,于是乎就有了这个 h
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表