查看: 494|回复: 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-7-14 14:58
  • 签到天数: 17 天

    [LV.4]偶尔看看III

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

    [LV.3]偶尔看看II

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

    2018-7-14 14:58
  • 签到天数: 17 天

    [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 | 显示全部楼层
    请问你有代码可以分享参考吗
    高级模式  
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    红外遥控+温湿度采集+SD卡存储
    红外遥控+温湿度采集+SD卡
    我用红外遥控发送信号,启动温湿度采集并存储到SD卡中,发现红外遥控信号检测不出来,
    求助光电开关的使用方法
    求助光电开关的使用方法
    如图中的光电开关(光电传感器),目前只知道黑色线接信号,棕色线接正极,蓝色线接负
    ESP8266联网测试
    ESP8266联网测试
    在文章《Arduino+ESP8266连接WiFi》中,测试了通过ESP8266的AT命令来连接WiFi的功能,
    Blink——Arduino的Hello World!
    Blink——Arduino的Hello
    本教程节选自《Arduino程序设计基础》 Arduino编程基础(零)——Blink,Arduino的He
    Arduino寻光功能求助
    Arduino寻光功能求助
    想做个寻光功能。目前代码已经写的差不多,用的下边的扩展板。有点不懂的是插的两个寻
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表