基于Arduino的四轴寻迹小车制作详解
创作时间:
作者:
@小白创作中心
基于Arduino的四轴寻迹小车制作详解
引用
CSDN
1.
https://blog.csdn.net/2301_78080608/article/details/139883852
四轴寻迹小车是一种能够自动识别并沿着预定轨迹行驶的机器人。它广泛应用于工业自动化、物流运输等领域。本文将详细介绍如何使用Arduino和五路寻迹传感器制作一个四轴寻迹小车,包括硬件连接和软件编程两个方面。
硬件准备
- Arduino控制板
- Adafruit Motor Shield电机驱动板
- 四个直流电机
- 五路寻迹传感器模块
- 连接线和面包板
硬件连接
电机连接:
#include <AFMotor.h> //add Adafruit Motor Shield library
AF_DCMotor LeftMotor1(2);
AF_DCMotor LeftMotor2(3);
AF_DCMotor RightMotor1(1);
AF_DCMotor RightMotor2(4);
五路寻迹传感器连接:
// 五路寻迹模块引脚定义
const int TrackSensorLeftPin1 = 9;
const int TrackSensorLeftPin2 = A2;
const int TrackSensorMid = A3;
const int TrackSensorRightPin1 = A4;
const int TrackSensorRightPin2 = A5;
软件编程
寻迹逻辑
寻迹的原理是通过发送信号,黑色吸光返回0,其他颜色返回1。博主选用的是五路寻迹,当小车直行时,中间返回值为0,总体返回 11011。
五路产生的常见情况:
- 11011:未偏离
- 10111:稍稍右偏,左走修正
- 11101:稍稍左偏,右走修正
- 01111:大右偏,左修正
- 11110:大左偏,右修正
代码实现
void setup() {
Serial.begin(9600);
// 初始化五路寻迹模块引脚为输入
pinMode(TrackSensorLeftPin1, INPUT);
pinMode(TrackSensorLeftPin2, INPUT);
pinMode(TrackSensorMid, INPUT);
pinMode(TrackSensorRightPin1, INPUT);
pinMode(TrackSensorRightPin2, INPUT);
}
void loop(){
xunji();
}
void xunji(){
// 读取五路寻迹模块的状态
int SLL = digitalRead(TrackSensorLeftPin1);
int SL = digitalRead(TrackSensorLeftPin2);
int SM = digitalRead(TrackSensorMid);
int SR = digitalRead(TrackSensorRightPin1);
int SRR = digitalRead(TrackSensorRightPin2);
// 根据五路寻迹模块的状态控制电机运动
if (SLL == 1 && SL ==1 && SM == 0 && SR == 1 && SRR == 1) {
motor_forward();
} else if (SLL == 1 && SL ==0 && SM == 1 && SR == 1 && SRR == 1) {
turn_l();
} else if (SLL == 0 && SL ==1 && SM == 1 && SR == 1 && SRR == 1) {
turn_l();
} else if (SLL == 1 && SL ==1 && SM == 1 && SR == 0 && SRR == 1) {
turn_r();
} else if (SLL == 1 && SL ==1 && SM == 1 && SR == 1 && SRR == 0) {
turn_r();
}
}
void motor_forward() {
LeftMotor1.run(FORWARD);
LeftMotor2.run(FORWARD);
RightMotor1.run(FORWARD);
RightMotor2.run(FORWARD);
LeftMotor1.setSpeed(120);
LeftMotor2.setSpeed(120);
RightMotor1.setSpeed(120);
RightMotor2.setSpeed(120);
}
void turn_l(){
LeftMotor1.run(BACKWARD);
LeftMotor2.run(BACKWARD);
RightMotor1.run(FORWARD);
RightMotor2.run(FORWARD);
LeftMotor1.setSpeed(75);
LeftMotor2.setSpeed(75);
RightMotor1.setSpeed(180);
RightMotor2.setSpeed(180);
}
void turn_r(){
LeftMotor1.run(FORWARD);
LeftMotor2.run(FORWARD);
RightMotor1.run(BACKWARD);
RightMotor2.run(BACKWARD);
LeftMotor1.setSpeed(180);
LeftMotor2.setSpeed(180);
RightMotor1.setSpeed(75);
RightMotor2.setSpeed(75);
}
void motor_stop() {
LeftMotor1.run(RELEASE);
LeftMotor2.run(RELEASE);
RightMotor1.run(RELEASE);
RightMotor2.run(RELEASE);
LeftMotor1.setSpeed(0);
LeftMotor2.setSpeed(0);
RightMotor1.setSpeed(0);
RightMotor2.setSpeed(0);
}
热门推荐
农村房屋分家协议书范本:法律视角下的家庭房产划分指南
后脑勺扁平怎么办?多种实用解决方案帮你改善头部外观
生病要忌口的十种发物 生病不能吃什么发物 日常的发物有哪些食物
咖啡的功效与注意事项
肋骨骨折吃什么食物恢复得快
钻孔压水试验、注水试验、连通试验定义、适用条件、主要任务和区别
日乙联赛战术分析:秋田闪电主场迎战长崎航海
“饭前不掼蛋,等于没吃饭” 中国掼蛋发明人讲述发明掼蛋经历
掼蛋,正红
冰草什么时候种植比较好
标准食谱:蛋炒饭制作规范
黑板报用英语怎么说?各种场合下的英语表达及例句!
盘点:2024年关于大脑的最有趣的科学研究
如何建立小区群组?这种群组对社区管理有何影响?
五险一金都包括什么
从“魔童”哪吒动画新突围看中国“智造”崛起
如何通过《玄女心经2阴阳和合》实现身心平衡,提升个人修炼?
揭秘怀孕瞒三不瞒四,这些显怀的孕相不要太明显
最正确的膝关节疼痛预防及舒缓方法
法硕考试及法学考研科目与总分概览:全面解读法硕考试分数构成
还款能力系数的计算和评估方法
肾病患者看病有门道,和医生的沟通技巧一次讲清
尖叫和脉动是电解质水吗?
探究国际货币意义:汇率、国际货币体系与全球经济治理
七级浮屠的浮屠是什么意思?
襄城区行政审批局以“微改革”激活营商环境新动能
探索传统智慧:黄道吉日的现代应用
被动声学监测设备性能比较及对鸟声识别的影响
中医治疗感冒:区分风寒风热
赏文艺、制非遗、观展览、逛市集,上海公共文化活动邀你过大年