基于Arduino的基础循迹小车制作教程(含代码)
创作时间:
作者:
@小白创作中心
基于Arduino的基础循迹小车制作教程(含代码)
引用
CSDN
1.
https://m.blog.csdn.net/2302_81380153/article/details/144469170
本文将介绍如何使用Arduino UNO或ESP32制作一个基础循迹小车。内容包括供电控制、PWM连线实例、硬件选择以及完整的代码实现。
供电控制
只需要在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小车战损版
本文原文来自CSDN
热门推荐
高血压患者的减压妙招:笑一笑十年少!
ATLAS CCV:未来战场上的智能“僚机”
印度古典音乐:从起源到现代的华丽蜕变
华夏之称:古代中国的别称
秋冬打卡:黄海野鹿荡&盐镇水街
美国24年来最严重空难:67人遇难,特朗普批DEI政策危及安全
美国24年最严重空难:军民空域协调漏洞引发的悲剧
“普罗米修斯”计划:ATLAS系统颠覆坦克战术
已有超10部新片或定档2025年春节档?
淮扬菜:前世今生与美食传奇
春节抢红包,如何保障你的钱袋子?
林芝桃花节倒计时!你的春季摄影攻略已备好
冬日摄影小窍门:拍雪景也能美如画
明年春天,去林芝拍最美桃花照!
《生化危机》:恐怖电影如何影响观众心理?
1960年生人职场逆袭指南:如何在退休后继续发光发热?
从《僵尸先生》到《活死人之夜》:东西方僵尸电影的开山之作
1960年生属鼠白羊座的你,2025年财运如何?
金州烩勺面:一碗承载历史与情感的美食
中国99A坦克火控系统再升级!信息化作战能力大幅提升
M60A3坦克火控系统升级揭秘:激光测距技术的首次实战应用
安康古镇:诗意栖居的江南水乡
2025春节档电影票房破38亿创新高!上市公司布局解析
糖尿病与心脑血管疾病关系紧密?如何预防?
米其林推荐:剑门豆腐的传奇之旅
潮州古城与广济桥:两天一夜的文化之旅
株洲及周边最美自驾游打卡地,你心动了吗?
冬季打卡!株洲自驾游必去景点大揭秘
大年初六是「送穷日」,为何要送穷?怎么送?有哪些习俗和忌讳?
中科院古脊椎所揭秘临夏盆地:十项世界之最展现古生物多样性