查看: 1019|回复: 9

[未解决] arduino双线循迹

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

    [LV.1]初来乍到

    发表于 2018-7-10 16:39 | 显示全部楼层 |阅读模式
    //#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)

    //int key=7;//定义按键 数字7 接口
    //int beep=12;//定义蜂鸣器 数字12 接口

    const int SensorRight = 3;     //右循迹红外传感器(P3.2 OUT1)
    const int SensorLeft = 5;       //左循迹红外传感器(P3.3 OUT2)

    int SL;    //左循迹红外传感器状态
    int SR;    //右循迹红外传感器状态

    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); //定义左循迹红外传感器为输入
    }

    //=======================智能小车的基本动作=========================
    //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);
    }
    //void right(int time)        //右转(右轮不动,左轮前进)
    void right()
    {
      digitalWrite(Right_motor_go,LOW);   //右电机后退
      digitalWrite(Right_motor_back,HIGH);
    digitalWrite(Left_motor_go,LOW);//左电机前进
      digitalWrite(Left_motor_back,HIGH);  
    }



    //void back(int time)          //后退
    void back(int time)
    {
      digitalWrite(Right_motor_go,LOW);  //右轮后退
      digitalWrite(Right_motor_back,HIGH);
      analogWrite(Right_motor_go,0);
      analogWrite(Right_motor_back,90);//PWM比例0~255调速
      digitalWrite(Left_motor_go,HIGH);  //左轮后退
      digitalWrite(Left_motor_back,LOW);
      analogWrite(Left_motor_go,90);
      analogWrite(Left_motor_back,0);//PWM比例0~255调速
      delay(time * 100);     //执行时间,可以调整  
    }
    //==========================================================



    void loop()
    {
      //keysacn();//调用按键扫描函数  
      while(1)
      {
      //有信号为LOW  没有信号为HIGH
      SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L1亮;没信号表明压在黑线上,车子底板上L1灭
      SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭
      if (SL == LOW&&SR==LOW)
       run();   //调用前进函数(停止)//都不亮,停止,都是LOW
      else if (SL == HIGH & SR == LOW)// 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转
       left();
      else if (SR == HIGH & SL == LOW) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转  
       right();
      else // 都是白色, 停止
      run();//都是亮,前进,都是HIGH
      }
    }

    各位朋友,上面这段代码已经能实现单线黑线循迹,现在我想实现黑线双线循迹(可能增加传感器),请教一下各位。即在黑线双线部分,沿着双线的一侧前进。

    整体赛道

    整体赛道

    双线赛道

    双线赛道

    车子模样

    车子模样


  • TA的每日心情
    奋斗
    2018-7-12 19:04
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2018-7-10 19:38 | 显示全部楼层
    楼主你好,我想问一下你的供电系统怎么连线的,arduino和L298N是怎么供电的,我和你的一样,但是弄不好供电这一方面,谢谢
  • TA的每日心情
    开心
    2018-5-29 13:32
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2018-7-10 21:01 | 显示全部楼层
    供电推简单的,你可以去其他帖看一下

    该用户从未签到

    发表于 2018-7-10 21:18 | 显示全部楼层
    右边传感器碰到黑线左转,左边传感器碰到黑线右转,传感器放到车体两侧。实现边沿寻迹
  • TA的每日心情

    2018-9-5 21:26
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2018-7-11 13:05 | 显示全部楼层
    你可以看看【原创】能走迷宫并优化路径的循线小车
    https://www.arduino.cn/forum.php?mod=viewthread&tid=22046&fromuid=141088
    (出处: Arduino中文社区)
    这个会有帮助
  • TA的每日心情
    奋斗
    2018-9-22 15:13
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2018-7-11 15:45 | 显示全部楼层
    可以调低速度,这样就能有时间给传感器反馈;或者是当检测两个红外都检测到黑色,立即停车,并且delay()时间要长,防止车停下的时候又检测到白色,到时候你可以再加个红外或者其他传感器来判断哪边有黑色线,然后设定往哪边走。个人想法。有其他方法成功了分享分享,我也想弄弄,昨晚在3群里(应该没错吧)问的应该是你吧,哈哈
  • TA的每日心情

    2018-9-5 21:26
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2018-7-11 17:45 | 显示全部楼层
    可以增加传感器数
  • TA的每日心情
    开心
    2018-5-29 13:32
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2018-7-11 18:56 | 显示全部楼层

    代码部分怎么操作呢
  • TA的每日心情
    开心
    2018-5-29 13:32
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2018-7-11 18:58 | 显示全部楼层
    作业小斗士 发表于 2018-7-11 13:05
    你可以看看【原创】能走迷宫并优化路径的循线小车
    https://www.arduino.cn/forum.php?mod=viewthread&tid=2 ...

    听说用三个传感器就可以了
  • TA的每日心情
    开心
    2018-5-29 13:32
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2018-7-11 23:47 | 显示全部楼层
    请问你有代码可以分享参考吗
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    中文字库的8针OLED12864模块 arduino
    中文字库的8针OLED12864模
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    博哥零基础教你玩转ESP8266(一) 重识ESP8266
    博哥零基础教你玩转ESP826
    帖子导航: 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    wifi音箱
    wifi音箱
    大家好,最近事情事炒鸡炒鸡多,姗姗来迟 很早前就计划自己做个wifi音箱了,正好趁这
    原创 drawbot平面关节机械臂 教程直播贴
    原创 drawbot平面关节机械
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太懒,一直没来得及
    创客集结号:MakeBlock mBot智能小车作品
    创客集结号:MakeBlock mB
    创客集结号:该套件包括各种随时可以使用的项目,包括避障车,线下车,遥控车,可用于
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表