基于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
热门推荐
数据标准化指南:类型、好处和方法
老年人吃什么好消化又有营养奶粉
如何提取公积金用于相关需求?提取过程中有哪些规定?
NBA历史最佳控卫排名出炉:库里第二,威少和哈登排名如何?
告别精致穷、月光族!什么是“财商”?你有高财商吗?培养自己高财商的8个方法。
揭示大脑奥秘——功能磁共振成像(fMRI)的应用
科学家破解灭绝恐龙陨石来源之谜
维生素D——隐藏的免疫调节高手
散瞳对眼睛有影响?眼科医生解答家长关心的6个散瞳问题!
砂锅从冰箱冷藏拿出来可以直接烧吗?
电机速度曲线规划:S形速度曲线设计与实现
KOL营销模式如何助力品牌提升影响力与知名度?
哪些因素影响博士生补助标准的提高?
南方人眼中,最好吃的5种粽子!滋味形态各不同,北方粽子未上榜
长时间热敷膝盖会造成什么后果
金价突破3140美元/盎司,国内金饰最高涨至953元/克,还能买吗?
5首蚀骨深情的友谊诗词,耐人寻味,人生有知己如此,夫复何求
数据中心网络架构设计与挑战
《哈姆雷特》的悲剧力量与人性探索
扶大厦于将倾——钓鱼城之战的缘起与经过
西安建大/西工大AFM:水凝胶,实现抗菌、电疗和伤口监测!
泡面营养价值分析:长期食用的危害与健康食用指南
汉语为什么是孤立语
孤立语有哪些
资本运作引猜测!辰欣药业二股东韩延振让位、拟减持公司近3%股份
椰子肉炖鸡汤,美味养生一锅煮(以椰汁为底,食补养生无负担)
车牌查询车辆信息,5种常用方法,你掌握几招
学生心怀宏志,高校助力启航——江西高校多措并举促进毕业生更高质量更充分就业
A股比B股价格差异的原因是什么?分析这一原因对市场结构有何影响?
考研名额,缩水了