基于Arduino的循迹小车制作教程(含代码)
创作时间:
作者:
@小白创作中心
基于Arduino的循迹小车制作教程(含代码)
引用
CSDN
1.
https://m.blog.csdn.net/2302_81380153/article/details/144469170
循迹小车是一种能够沿着特定轨迹行驶的机器人,广泛应用于自动化生产线、物流运输等领域。本文将详细介绍基于Arduino的循迹小车制作方法,包括硬件连接、基础函数和完整代码,适合初学者学习和参考。
供电控制
只需要在12V供电处接上7-12V电压,供电GND处与单片机共地即可,5V供电处会输出一个5V的电压,可以用于给单片机供电,做小车时最常用的就是这种方式。使用这种方式时,板载5V使能不用管。
PWM连线实例
L298N 电源
12V 电源12V
GND 电源负
L298N UNO
OUT1和OUT2 电机1的两个端子
OUT3和OUT4 电机2的两个端子
ENA 5
ENB 9
IN1和IN2 6和7
IN3和IN4 10和11
VSS 5V
GND GND
L298N详细信息大家可以看电机驱动----L298N,这里就不再重复了。
硬件
单片机选用UNO或ESP32(本文代码是UNO的,ESP32改个引脚就好)。
基础函数
pinMode(引脚,状态) //(INPUT输入,OUTPUT输出)
analogWrite(引脚,PWM(0-255)) //PWM函数
digitalWrite(引脚, 高低电平); //引脚设置
digitalRead(引脚) //读取引脚高低电平
代码
#include <Arduino.h>
int ENA=5, IN1=6, IN2=7, ENB=9, IN3=10,IN4=11; //电机驱动
int L1=2, L2=4, R1=12, R2=13; //循迹模块
int La, Lb, Ra, Rb;
void setup() {
pinMode(L1, INPUT);
pinMode(L2, INPUT);
pinMode(R1, INPUT);
pinMode(R2, INPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
La = digitalRead(L1);
Lb = digitalRead(L2);
Ra = digitalRead(R1);
Rb = digitalRead(R2);
if (La == 0 && Lb == 0 && Ra == 0 && Rb == 0) {
analogWrite(ENA, 50);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 50);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
}
if (La == 1 && Lb == 0 && Ra == 0 && Rb == 0) {
analogWrite(ENA, 80);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 80);
digitalWrite(IN3, 0);
digitalWrite(IN4, 1);
delay(150);
}
if (La == 0 && Lb == 1 && Ra == 0 && Rb == 0) {
analogWrite(ENA, 60);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 50);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
}
if (La == 0 && Lb == 0 && Ra == 1 && Rb == 0) {
analogWrite(ENA, 50);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 60);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
}
if (La == 0 && Lb == 0 && Ra == 0 && Rb == 1) {
analogWrite(ENA, 80);
digitalWrite(IN1, 0);
digitalWrite(IN2, 1);
analogWrite(ENB, 80);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
delay(150);
}
if (La == 1 && Lb == 1 && Ra == 0 && Rb == 0) {
analogWrite(ENA, 80);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 80);
digitalWrite(IN3, 0);
digitalWrite(IN4, 1);
}
if (La == 0 && Lb == 0 && Ra == 1 && Rb == 1) {
analogWrite(ENA, 80);
digitalWrite(IN1, 0);
digitalWrite(IN2, 1);
analogWrite(ENB, 80);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
}
if (La == 1 && Lb == 1 && Ra == 1 && Rb == 1) {
analogWrite(ENA, 60);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 60);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
}
if (La == 1 && Lb == 0 && Ra == 0 && Rb == 1) {
analogWrite(ENA, 60);
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
analogWrite(ENB, 60);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
}
delay(1);
}
正常应该封装模块化的,但作者觉得这样其实也行(毕竟作者是写好一个判断就开始Ctrl+v了)。
下面是UNO循迹小车的照片和ESP32小车(因为作者真的做了两个车...)
UNO小车战损版
热门推荐
慢旅游升温 绿皮火车受带娃家长和老人青睐
小米熊科普:如何在课堂上帮助患有抽动症的学生?
抽动症:影响孩子学习社交的"隐形障碍"
云南省曲靖市人口普查数据统计
曲靖:立足资源禀赋 因地制宜推动高质量发展
双十一揭秘:你的全屋智能购买决策
广州科技贸易职业学院怎么样?专业设置及网友评价全解析
德阳十大名菜:从广汉缠丝兔到什邡板鸭,品味四川德阳的美食传奇
下庄扎染:非遗文化的数字新生
绝壁上的“天路”:重庆巫山下庄村的致富之路
毛相林:带领下庄村从“天坑”走向富裕的领路人
为何中国正成为全球冲突理想调解人
新年新计划!用时间管理告别拖延症
《拖延症心理学》:从心理到生理,全面解析拖延症的成因与对策
《立即行动》教你打造无拖延职场
金蟾的摆放方法及禁忌金蟾 金蟾摆放的正确方法
春节拜年新姿势:从古至今的花样翻新
春节假期如何增进家庭感情?
双十一必学:夜景照片后期处理技巧大揭秘!
用苹果手机拍出最美星空,你也可以!
红枣怎么保存最好时间最长?
浙江台州四日游全攻略:四天三晚深度体验,尽享山海文化之旅
长沙必打卡!这9个网红拍照圣地你去过吗?
长沙网红打卡全攻略:从自然景观到文艺空间
长沙必打卡的历史文化景点摄影指南
改善家庭环境,助力抽动症儿童康复
南京天佑儿童医院推荐:儿童抽动症三大干预法
儿童抽动症新疗法:专家力荐心理教育+行为干预
江苏蛇文化:从蛇王庙到白蛇传
徐州夜景打卡指南:专业摄影师教你拍大片