本帖是在参考了很多博客之后进行的一次实战加总结,参考连接如下:
Arduino智能小车寻迹篇
不适用PWM调速彻底解决L298n电机驱动转速不同的问题

1.工作原理

总体思想:小车通过四路寻迹模块得到路径信息,根据对其返回数据的判断,调整小车运行姿态,使其达到寻迹的功能

2.清单

1、小车套件(小车的底盘,轮子,开关这些)
2、Arduino Uno板
3、9~12V的电源一个(超过6V就可以,四节电池盒就能跑)
4、直流减速马达两个
5、四路寻迹模块(两个其实也可以实现寻迹)
6、L298n电机驱动
7、工具(黑胶带,胶枪,螺丝刀)

3.模块介绍

a)四路寻迹模块


规格参数:

1.工作电压:DC 3.3V-5V

2.工作电流:尽量选择1A以上电源供电

3.工作温度:-10℃—+50℃

4.安装孔径:M3螺丝

5.检测距离:1mm至60 CM可调,距离越近性能越稳定,白色反射距离远。

6.输出接口:6线制接口(1234为4路信号输出端,+为正电源,-为负电源也就是地线)

7.输出信号:TTL电平(可直接连接单片机I/0号,感应到传感器反射回来的红外光时,红指示灯亮,输出低电平;没有红外光时,指示灯不亮,输出高电平。)

单独测试代码:

int Input1 = 2;   //定义引脚2,3,4,5为Input2345
int Input2 = 3;
int Input3 = 4;
int Input4 = 5;void setup() {//串口初始化Serial.begin(9600);//引脚初始化pinMode(Input1,INPUT);pinMode(Input2,INPUT);pinMode(Input3,INPUT);pinMode(Input4,INPUT);}void loop() {// 设定一个数组接受数据int data[4];//读取数据并赋值data[0] = digitalRead(2);data[1] = digitalRead(3);data[2] = digitalRead(4);data[3] = digitalRead(5);//打印测试结果Serial.print(data[0]);Serial.print("---");Serial.print(data[1]);Serial.print("---");Serial.print(data[2]);Serial.print("---");Serial.println(data[3]);delay(100);
}

b)L298n电机驱动模块

电机驱动模块需要注意的地方在于,L298n驱动两个轮子的速度可能会不一致,需要根据情况调整参数,另外电源千万不要接错了,看清楚再接,逻辑输入要选择Arduino上带PWM~的接口。


这个模块的具体使用资料:最详细的L298n电机驱动模块介绍
自己测试可以先看这一篇:Arduino通过L298n驱动电机

4.整体代码

int leftMotor1 = 6;  //电机引脚,根据自己实际连线进行更改
int leftMotor2 = 5;
int rightMotor1 = 10;
int rightMotor2 = 9;int IN1 = 7;    //定义uno的pin1为红外寻迹模块输入IN1
int IN2 = 2;
int IN3 = 3;
int IN4 = 4;#define STOP      0
#define FORWARD   1
#define BACKWARD  2
#define TURNLEFT  3
#define TURNRIGHT 4void setup() {//串口初始化Serial.begin (9600);//初始化各IO,模式为OUTPUT 输出模式pinMode(leftMotor1, OUTPUT);pinMode(leftMotor2, OUTPUT);pinMode(rightMotor1, OUTPUT);pinMode(rightMotor2, OUTPUT);//初始化红外寻迹模块输入引脚为INPUT模式pinMode(IN1,INPUT);pinMode(IN2,INPUT);pinMode(IN3,INPUT);pinMode(IN4,INPUT);
}void loop() {Tracking();
}void Tracking(){//将寻迹模块的数据读入数组int data[4];data[0] = digitalRead(7);data[1] = digitalRead(2);data[2] = digitalRead(3);data[3] = digitalRead(4);//根据信号输入选择小车运动模式if(!data[0] && !data[1] && !data[2] && !data[3])  //左右都没有检测到黑线{motorRun(FORWARD, 50);}if(data[0] || data[1])  //右边检测到黑线{motorRun(TURNRIGHT, 40);//motorRun(TURNLEFT, 40);}if(data[2] || data[3])  //左边检测到黑线{motorRun(TURNLEFT, 40);//motorRun(TURNRIGHT, 40);}if(data[0] && data[3])  //左右都检测到黑线是停止{motorRun(STOP, 0);while(1);}Serial.print(data[0]);Serial.print("---");Serial.print(data[1]);Serial.print("---");Serial.print(data[2]);Serial.print("---");Serial.println(data[3]);
}void motorRun(int cmd,int value)
{switch(cmd){case FORWARD:Serial.println("FORWARD"); //输出状态analogWrite(leftMotor1, value);digitalWrite(leftMotor2, LOW);analogWrite(rightMotor1, value);digitalWrite(rightMotor2, LOW);break;case BACKWARD:Serial.println("BACKWARD"); //输出状态digitalWrite(leftMotor1, LOW);analogWrite(leftMotor2, value);digitalWrite(rightMotor1, LOW);analogWrite(rightMotor2, value);break;case TURNLEFT:Serial.println("TURN  LEFT"); //输出状态analogWrite(leftMotor1, value);digitalWrite(leftMotor2, LOW);digitalWrite(rightMotor1, LOW);analogWrite(rightMotor2, value);break;case TURNRIGHT:Serial.println("TURN  RIGHT"); //输出状态digitalWrite(leftMotor1, LOW);analogWrite(leftMotor2, value);analogWrite(rightMotor1, value);digitalWrite(rightMotor2, LOW);break;default:Serial.println("STOP"); //输出状态digitalWrite(leftMotor1, LOW);digitalWrite(leftMotor2, LOW);digitalWrite(rightMotor1, LOW);digitalWrite(rightMotor2, LOW);}
}

用寻迹模块L298n电机驱动模块制作Arduino寻迹小车四路(含清单,代码,接线,注意事项)相关推荐

  1. 【Arduino蓝牙小车】L298N电机驱动模块详解

    原文链接:[Arduino] 从零制作蓝牙小车 - 饮猫的学习日志 1. L298N模块的使用 这是一个L298N电机驱动模块的图片.你可能会觉得接口有一点点多.但其实搞清楚它的控制原理后就能很快完成 ...

  2. PWM的使用–舵机模块和电机驱动模块

    PWM的使用–舵机模块和电机驱动模块 @(MSP432P401R) PWM的配置 基本默认即可 PWM的API的使用 参数 periodUnits即周期的单位 periodValue即周期值 duty ...

  3. L298N 直流电机驱动模块与 Arduino

    L298N 直流电机驱动模块与 Arduino 原文地址 L298N 电机驱动器可以控制两个直流电机的速度和旋转方向. 此外,它还可以控制双极步进电机,例如NEMA 17.如果您想了解更多信息,请查看 ...

  4. 继电器模块和L298N电机驱动模块的使用

    单片机如何与L298N和继电器连接?什么时候选择L298N或继电器模块? L298N模块 主控芯片为L298N的双H桥电机驱动模块,驱动电压为5~35V,一般驱动直流电机正反转一般使用L298N. 接 ...

  5. 【Arduino学习笔记】使用L298N电机驱动模块驱动直流电机

    L298N是Arduino的电机驱动模块,能驱动步进电机和两路直流电机,驱动步进电机和直流电机的文章网上百度一大堆,这里我想说的是L298N模块外接独立12V电压驱动电机的方法.我使用的L298N模块 ...

  6. l298n电机驱动模块驱动直流电机(佛科院——深夜学习)

    目录 一.为什么不能直接用单片机IO口驱动电机,要用电机驱动模块? 二.使用步骤: 1.L298n各引脚作用: 2.推荐的供电方式: 3.推荐的控制方式: 一.为什么不能直接用单片机IO口驱动电机,要 ...

  7. 使用超声波传感器采用图形化编程制作Arduino自动跟随小车

    在智能小车项目中,我们通过控制直流电机的正反转.刹车和转速来控制小车的行动. 在这台小车中,对直流电机发出的控制指令来自于Arduino主控板,而Arduino主控板的外部输入则来自于超声波传感器.灰 ...

  8. l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机

    如果您打算建造自己的3D打印机或CNC机器,则需要控制一堆步进电机.而且,由一个arduino控制所有这些,可能会占用大量的处理时间,并且不会给它留下很多做其他事情的空间.除非您使用独立的专用步进电机 ...

  9. Arduino 项目笔记 | 基于 Arduino 单片机的 A4988 和 L298N电机驱动模块实验记录

    目录 1. Arduino Nano 简介 2. 技术规格 3. 输入和输出 1. A4988 简介 2. A4988 引脚定义图及功能说明 (四相步进电机) 3. Arduino使用A4988控制电 ...

最新文章

  1. 《树莓派Python编程入门与实战(第2版)》——3.4 关于Python解释器
  2. C++11系列学习之二-----lambda表达式
  3. SP1043 GSS1 - Can you answer these queries I 猫树
  4. 信息学奥赛一本通C++语言——1002:输出第二个整数
  5. 深度学习在物理层信号处理中的应用研究
  6. 【Java】开源工具 Hutool 不糊涂
  7. 【GTK3.0】背景设置
  8. mysql57包解压安装_mysql5.7解压包安装教程
  9. mac桌面存在顽固文件无法删除?怎么办?
  10. 常用大数据核心技术有哪些?
  11. 51单片机学习笔记——AD转换
  12. 高中计算机试讲教案模板,15分钟试讲教案模板.doc
  13. php edm 系统,edm.php · 那些年我们一起/fanwe - Gitee.com
  14. 禁用ubuntu16.04的guest账户
  15. 雷达原理---时频分析--6.利用小波分析进行奇异点定位和消除
  16. oracle18c默认sid,Oracle 18c-可伸缩序列(Scalable Sequence)
  17. 小米传送门导致OnTouch事件中MotionEvent.ACTION_UP不执行
  18. 分布式理论分布式ID生成大全
  19. 【Codeforces301E】Yaroslav and Arrangements
  20. 怎么把图片拼接成长图,3招教你快速处理

热门文章

  1. SW使用和安装过程中的常见难题(无法获得许可,无法连接SQL,SQL无法启动,卸载SQL和重装SQL)
  2. unity5.6回合制战斗卡牌游戏源码支持安卓+IOS双端 C#语言开发
  3. 学生资助管理系统毕业设计
  4. Django之模板(Template)
  5. 西门子、PTC、达索、Autodesk、Aras五大工业软件厂商的科技盛会
  6. 对广域网和局域网区别的了解与认识报告
  7. 自动点击器如何设置最快_股票如何设置止损自动卖出?
  8. python简历数据提取_提取python简介
  9. 算法 {欧拉函数,欧拉定理,费马小定理}
  10. Android SDK Manager 无法下载Android8.1.0(API 27) SDK Platform的解决方案