基于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
热门推荐
数字世界的人格图谱,内容营销专家刘鑫炜揭秘各大平台用户画像!
清洗西兰花用这方法,虫子脏东西“自动”跑出来,从此爱上西兰花
西兰花的五种经典做法,总有一款打动你的味蕾
儒家思想在企业管理中的应用与实践
2025年玄武岩市场现状分析:玄武岩市场价值超过3.1亿美元
升级内存对笔记本电脑性能提升有多大?
拉肚子喷射黄水怎么办?专业医生为您详细解答
蕅益大师:念佛能圆满六度
ADX指标在技术分析中的描述与应用
贷款买车防坑指南:车贷利率多少才不吃亏?
谁懂啊!让全国游客产生“戒断反应”的贵州烙锅!网友评价:唯一的缺点是限定贵州!
外子是什么意思
探究哈希表:高效的数据存储与快速检索
冰箱制冷方式有几种,如何选择适合自己的冰箱
15种助眠食物推荐:消除疲劳又减压,有效助眠让你一觉到天亮!
单人旅行攻略:全球精选路线与实用规划指南
中国国家图书馆:数字时代的文化宝库
眼角疼痛怎么办?专业医生给出6个处理方法
小孩全身红疹发痒是怎么回事
测土仪器在农业耕作中的重要作用
穿越千年的史诗,探索文明的交汇与融合——伯顿·斯坦《印度文明史》中译本面世
野木瓜片的成分、功效与使用方法
CPI数据是怎样算出来的?
奥利司他胶囊拉出来的油是脂肪吗
被辞退的证据收集与证明方法
2025年MPA(公共管理硕士)初试具体考试时间、考试科目安排
正常吞咽过程是什么样子 吞咽的生理过程解析
正规借条撰写指南:确保法律效力的关键要素
小米路由器SSH下安装DDNS-GO+Cloudflare设置远程访问
歼-35性能全面超越F-35,但是出口却急不得,会遭遇哪些障碍?