基于arduino的5路循迹小车(2)
小车5路红外循线
接第一篇链接 https://blog.csdn.net/weixin_45984029/article/details/103437347

1.硬件选用

5个红外循迹模块(推荐这种,性价比较高)

2.接线

VCC接开发板3.3V
GND接开发板GND
D0接开发板信号口(具体位置对应代码)
A0不接

3.代码

int Left_motor_go1 = 24;        //左电机前进 AIN1
int Left_motor_back1 = 25;      //左电机后退 AIN2int Right_motor_go1 = 22;       //右电机前进 BIN1
int Right_motor_back1 = 23;     //右电机后退 BIN2int Left_motor_pwm1 = 3;       //左电机控速 PWMA1
int Right_motor_pwm1= 5;      //右电机控速 PWMB1
int Left_motor_pwm2 = 4;       //左电机控速 PWMA2
int Right_motor_pwm2= 6;      //右电机控速 PWMB2//循迹红外引脚定义
//TrackSensorLeftPin1 TrackSensorLeftPin2 TrackSensorMid TrackSensorRightPin1 TrackSensorRightPin2
//      A1                   A2                  A3                   A4                A5
const int TrackSensorLeftPin1  =  A1;  //定义第一个循迹红外传感器引脚为A1
const int TrackSensorLeftPin2  =  A2;  //定义第二个循迹红外传感器引脚为A2
const int TrackSensorMid = A3;       //定义第三个循迹红外传感器引脚为A3
const int TrackSensorRightPin1 =  A4;  //定义第四个循迹红外传感器引脚为A4
const int TrackSensorRightPin2 =  A5;  //定义第五个循迹红外传感器引脚为A5//定义各个循迹红外引脚采集的数据的变量
int SLL;
int SL;
int SM;
int SR;
int SRR;void setup()
{//初始化电机驱动IO口为输出方式pinMode(Left_motor_go1, OUTPUT);pinMode(Left_motor_back1, OUTPUT);pinMode(Right_motor_go1, OUTPUT);pinMode(Right_motor_back1, OUTPUT);//定义四路循迹红外传感器为输入接口pinMode(TrackSensorLeftPin1, INPUT);pinMode(TrackSensorLeftPin2, INPUT);pinMode(TrackSensorMid,INPUT);pinMode(TrackSensorRightPin1, INPUT);pinMode(TrackSensorRightPin2, INPUT);//四路循迹红外传感器初始化为高电平digitalWrite(TrackSensorLeftPin1, HIGH);digitalWrite(TrackSensorLeftPin2, HIGH);digitalWrite(TrackSensorMid,HIGH);digitalWrite(TrackSensorRightPin1, HIGH);digitalWrite(TrackSensorRightPin2, HIGH);
}void run(int left_speed, int right_speed)
{//左电机前进digitalWrite(Left_motor_go1, LOW);   //左电机前进使能digitalWrite(Left_motor_back1, HIGH);  //左电机后退禁止analogWrite(Left_motor_pwm1, LOW);analogWrite(Left_motor_pwm2, left_speed);//右电机前进digitalWrite(Right_motor_go1, LOW);  //右电机前进使能digitalWrite(Right_motor_back1, HIGH); //右电机后退禁止analogWrite(Right_motor_pwm1, LOW);analogWrite(Right_motor_pwm2, right_speed);
}void  left(int left_speed, int right_speed)
{//左电机后退digitalWrite(Left_motor_go1, HIGH);    //左电机前进禁止digitalWrite(Left_motor_back1,LOW);  //左电机后退禁止analogWrite(Left_motor_pwm2, left_speed);analogWrite(Left_motor_pwm1,LOW);//右电机前进digitalWrite(Right_motor_go1, LOW);  //右电机前进使能digitalWrite(Right_motor_back1, HIGH); //右电机后退禁止analogWrite(Right_motor_pwm2, LOW);analogWrite(Right_motor_pwm1, right_speed);
}void right(int left_speed, int right_speed)
{//左电机前进digitalWrite(Left_motor_go1, LOW);   //左电机前进使能digitalWrite(Left_motor_back1, HIGH);  //左电机后退禁止analogWrite(Left_motor_pwm2, LOW);analogWrite(Left_motor_pwm1, left_speed);//右电机后退digitalWrite(Right_motor_go1, HIGH );   //右电机前进禁止digitalWrite(Right_motor_back1,LOW); //右电机后退禁止analogWrite(Right_motor_pwm2, right_speed);analogWrite(Right_motor_pwm1, LOW );}void back(int left_speed, int right_speed)
{//左电机后退digitalWrite(Left_motor_go1, HIGH);   //左电机前进禁止digitalWrite(Left_motor_back1, LOW);  //左电机后退使能analogWrite(Left_motor_pwm1, left_speed);analogWrite(Left_motor_pwm2, LOW);//右电机后退digitalWrite(Right_motor_go1, HIGH);  //右电机前进禁止digitalWrite(Right_motor_back1, LOW); //右电机后退使能analogWrite(Right_motor_pwm1, right_speed);analogWrite(Right_motor_pwm2, LOW);
}void bank(int left_speed, int right_speed)//惯性停车
{//左电机空digitalWrite(Left_motor_go1, LOW);   //左电机前进禁止digitalWrite(Left_motor_back1, LOW);  //左电机后退禁止analogWrite(Left_motor_pwm1, left_speed);analogWrite(Left_motor_pwm2, left_speed);//右电机空digitalWrite(Right_motor_go1, LOW);   //右电机前进禁止digitalWrite(Right_motor_back1,LOW); //右电机后退禁止analogWrite(Right_motor_pwm1, right_speed);analogWrite(Right_motor_pwm2, right_speed);
}
void loop()
{//检测到黑线时循迹模块相应的指示灯灭,端口电平为HIGH//未检测到黑线时循迹模块相应的指示灯亮,端口电平为LOWSLL  = digitalRead(TrackSensorLeftPin1);SL  = digitalRead(TrackSensorLeftPin2);SM = digitalRead(TrackSensorMid);SR = digitalRead(TrackSensorRightPin1);SRR = digitalRead(TrackSensorRightPin2);//循迹if( SM == HIGH ){run(45,37);                                                                                                                  }if( SL == HIGH && SM == LOW){left(35,57);}if( SLL == HIGH && SM == LOW){left(35,57);}if( SR == HIGH && SM == LOW){right(50,32);}if( SRR == HIGH && SM == LOW){right(50,32);}if(SR == HIGH && SRR == HIGH){right(50,32);}if(SL == HIGH && SLL == HIGH){left(30,57);}if(SRR == HIGH && SR == HIGH && SM == HIGH && SL == HIGH){right(50,32);}if(SM == HIGH && (SL == HIGH && SLL == HIGH) || (SR == HIGH && SL == HIGH) || (SR == HIGH && SRR == HIGH)){run(45,37);}
}

4.测试小车

按正确连线,已经可以正常循迹了
代码中的PWM数值可根据实际情况更改(每个电机各有差异)

基于arduino的5路循迹小车(2)相关推荐

  1. 基于arduino的5路循迹小车(1)

    基于arduino的5路循迹小车(1) 初步小车运动 1.硬件选用 1.开发板使用arduino 2560 2.电机驱动板使用 大功率电机驱动板(PWM由两个端子控制) 3.电源12V锂电池 4.降压 ...

  2. 基于arduino的5路循迹小车(4)与舵机控制板的通信控制

    基于arduino的5路循迹小车(4) arduino与舵机控制板的通信控制 以及语音播报模块 接第一篇链接 https://blog.csdn.net/weixin_45984029/article ...

  3. 基于arduino的5路循迹小车(3)

    基于arduino的5路循迹小车(3) 使用红外模块的定位停车 以及超声波避障 接第一篇链接 https://blog.csdn.net/weixin_45984029/article/details ...

  4. 基于Arduino控制的网格循迹小车

    1.元器件选型 电子元器件清单 序号 标号 名称 规格 数量 1 / Arduino板 / 1 2 / 驱动模块 LM298N 1 3 / 巡线模块 5 机械零部件清单 序号 标号 名称 规格 数量 ...

  5. ARDUINO NANO 的 PID 循迹小车

    [Arduino项目]使用 ARDUINO NANO 的 PID 循迹小车 -------------------------------------------------------------- ...

  6. 基于Arduino3路循迹小车

    本人西伯利亚蟑螂,最近抽空回顾了一下arduino,顺手做了个arduino循迹小车 (条件所限我的小车为两驱三路循迹模块小车) 话不多说,先上干货. #define STOP      0 #def ...

  7. 基于STM32F103C8T6的六路寻迹小车制作攻略

    文章目录 前言 一.所需材料 二.组装步骤 三.代码讲解 总结 前言 寻迹小车是一个入门级别的东西,可以通过制作一辆寻迹小车熟悉单片机的一些基础操作,比如运用GPIO口.串口通信等单片机知识.寻迹我采 ...

  8. 基于STM32开发板的循迹小车设计

    STM32的简单应用之循迹小车 前言 智能寻迹基于自动引导机器人系统,可以实现小车自动识别路线.智能寻迹小车运用传感器.单片机.电机驱动及自动控制等技术实现,管理时自动寻迹导航.该技术已经应用于无人驾 ...

  9. 基于STM32芯片的四驱循迹小车

    循迹小车包括三个基本模块: 1.宏定义模块 2.电机驱动模块 3.红外循迹模块 4.PWM调速模块 我将代码部分分为4个模块进行模块化编程:interface(各个引脚口的宏定义,方便记忆).moto ...

最新文章

  1. shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  2. 融云发送图片消息_发送消息
  3. 二分图专题系列各大知识点总结(匈牙利,染色法,最大独立集,最小点覆盖,最小路径覆盖)
  4. 真实版删库跑路,宕机36小时市值蒸发9亿!
  5. Pixel 3的超分辨变焦技术
  6. Linux加密框架 crypto 哈希算法举例 MD5
  7. Matlab仿真炮弹飞行轨迹——探究射弹参数对飞行轨迹的影响
  8. SAP License:物料分类帐-上一期间结算错误处理办法
  9. Xshell 安装教程以及踩过的坑
  10. 免费OCR文字识别软件,识别图片文字
  11. 一款ModbusRTU/TCP485串口协议调试软件工具绿色版免安装
  12. 常用 ajax js 表单
  13. 87个电影调色PR预设包
  14. 遍历vad二叉树来遍历进程里的模块
  15. 程控交换机、电话交换机、什么是交换机、网络交换机
  16. 微软Azure组面试(部分)
  17. RK系列(RK3568) 收音机tef6686芯片驱动,i2c驱动
  18. Servlet什么时候实例化?destory到底摧毁的是什么?
  19. (姊妹仨)BlazePalm: 先检手掌再检骨架,虚拟合成数据助力 2.5D 信息输出
  20. CAD图纸可以转换成哪些格式呢?

热门文章

  1. 啊哈C语言第四章99乘法表
  2. 寂寞沙洲冷......
  3. 中国各省省会城市的坐标地址信息
  4. 大一第一学期生活学习总结
  5. 【Windows(shell:startup)】个性化开机自启动目录与途径方法
  6. ubuntu16.04安装digits
  7. slurm作业管理系统怎么用?
  8. Java数据库编程(JDBC)-入门笔记
  9. 学习python第八天(总算是把最最最最最基础的部分学的差不多啦,掌握一般般特别是后面,)
  10. 企业管理理论综述与实践 — 管理、使命、愿景、价值观