用寻迹模块L298n电机驱动模块制作Arduino寻迹小车四路(含清单,代码,接线,注意事项)
本帖是在参考了很多博客之后进行的一次实战加总结,参考连接如下:
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寻迹小车四路(含清单,代码,接线,注意事项)相关推荐
- 【Arduino蓝牙小车】L298N电机驱动模块详解
原文链接:[Arduino] 从零制作蓝牙小车 - 饮猫的学习日志 1. L298N模块的使用 这是一个L298N电机驱动模块的图片.你可能会觉得接口有一点点多.但其实搞清楚它的控制原理后就能很快完成 ...
- PWM的使用–舵机模块和电机驱动模块
PWM的使用–舵机模块和电机驱动模块 @(MSP432P401R) PWM的配置 基本默认即可 PWM的API的使用 参数 periodUnits即周期的单位 periodValue即周期值 duty ...
- L298N 直流电机驱动模块与 Arduino
L298N 直流电机驱动模块与 Arduino 原文地址 L298N 电机驱动器可以控制两个直流电机的速度和旋转方向. 此外,它还可以控制双极步进电机,例如NEMA 17.如果您想了解更多信息,请查看 ...
- 继电器模块和L298N电机驱动模块的使用
单片机如何与L298N和继电器连接?什么时候选择L298N或继电器模块? L298N模块 主控芯片为L298N的双H桥电机驱动模块,驱动电压为5~35V,一般驱动直流电机正反转一般使用L298N. 接 ...
- 【Arduino学习笔记】使用L298N电机驱动模块驱动直流电机
L298N是Arduino的电机驱动模块,能驱动步进电机和两路直流电机,驱动步进电机和直流电机的文章网上百度一大堆,这里我想说的是L298N模块外接独立12V电压驱动电机的方法.我使用的L298N模块 ...
- l298n电机驱动模块驱动直流电机(佛科院——深夜学习)
目录 一.为什么不能直接用单片机IO口驱动电机,要用电机驱动模块? 二.使用步骤: 1.L298n各引脚作用: 2.推荐的供电方式: 3.推荐的控制方式: 一.为什么不能直接用单片机IO口驱动电机,要 ...
- 使用超声波传感器采用图形化编程制作Arduino自动跟随小车
在智能小车项目中,我们通过控制直流电机的正反转.刹车和转速来控制小车的行动. 在这台小车中,对直流电机发出的控制指令来自于Arduino主控板,而Arduino主控板的外部输入则来自于超声波传感器.灰 ...
- l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机
如果您打算建造自己的3D打印机或CNC机器,则需要控制一堆步进电机.而且,由一个arduino控制所有这些,可能会占用大量的处理时间,并且不会给它留下很多做其他事情的空间.除非您使用独立的专用步进电机 ...
- Arduino 项目笔记 | 基于 Arduino 单片机的 A4988 和 L298N电机驱动模块实验记录
目录 1. Arduino Nano 简介 2. 技术规格 3. 输入和输出 1. A4988 简介 2. A4988 引脚定义图及功能说明 (四相步进电机) 3. Arduino使用A4988控制电 ...
最新文章
- 《树莓派Python编程入门与实战(第2版)》——3.4 关于Python解释器
- C++11系列学习之二-----lambda表达式
- SP1043 GSS1 - Can you answer these queries I 猫树
- 信息学奥赛一本通C++语言——1002:输出第二个整数
- 深度学习在物理层信号处理中的应用研究
- 【Java】开源工具 Hutool 不糊涂
- 【GTK3.0】背景设置
- mysql57包解压安装_mysql5.7解压包安装教程
- mac桌面存在顽固文件无法删除?怎么办?
- 常用大数据核心技术有哪些?
- 51单片机学习笔记——AD转换
- 高中计算机试讲教案模板,15分钟试讲教案模板.doc
- php edm 系统,edm.php · 那些年我们一起/fanwe - Gitee.com
- 禁用ubuntu16.04的guest账户
- 雷达原理---时频分析--6.利用小波分析进行奇异点定位和消除
- oracle18c默认sid,Oracle 18c-可伸缩序列(Scalable Sequence)
- 小米传送门导致OnTouch事件中MotionEvent.ACTION_UP不执行
- 分布式理论分布式ID生成大全
- 【Codeforces301E】Yaroslav and Arrangements
- 怎么把图片拼接成长图,3招教你快速处理
热门文章
- SW使用和安装过程中的常见难题(无法获得许可,无法连接SQL,SQL无法启动,卸载SQL和重装SQL)
- unity5.6回合制战斗卡牌游戏源码支持安卓+IOS双端 C#语言开发
- 学生资助管理系统毕业设计
- Django之模板(Template)
- 西门子、PTC、达索、Autodesk、Aras五大工业软件厂商的科技盛会
- 对广域网和局域网区别的了解与认识报告
- 自动点击器如何设置最快_股票如何设置止损自动卖出?
- python简历数据提取_提取python简介
- 算法 {欧拉函数,欧拉定理,费马小定理}
- Android SDK Manager 无法下载Android8.1.0(API 27) SDK Platform的解决方案