基于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);
}
热门推荐
【医疗问答】冠状动脉支架术后如何避免血管再次狭窄?
哺乳期可以吃明虾吗
锐龙9600X处理器是否带有核显?答案在这里
《怪物猎人:世界》评测:次世代猎人革命
人参、黄芪、白术均为补气药,但是三味药差别不小。
不做“代码工”,轻松规划你的编程人生:保持竞争力与突破职业瓶颈的关键

板蓝根种植成本与利润分析
如何了解不同城市的治安状况?这些状况如何影响居住安全?
运算放大器的输入失调电压和输入偏置电流理论与仿真分析
柑橘树修剪时间和方法
解密阿基里斯悖论:速度与时间的哲学思考
瑞虎8 pro机械钥匙使用教程
如何正确选择与服用保健品:每日必需营养补充指南
短视频犯罪片的类型及其法律问题研究
C语言如何动态设置数组大小
虞美人品种都有哪些?虞美人颜色有几种?
喝茶聊天群的名字可以从以下几个方面考虑,力求好听、有特色、易于记忆:
虞美人有哪几种颜色
烛影斧声最早出自哪里,在历史上真实存在吗?
中国各地特色火锅,这7道火锅是我最想尝试的系列~
西葫芦几月播种?种植时间及条件全解析
进击的巨人莱纳结局揭秘:从反派到英雄的转变
调岗必须人事通知:合法合规的必要性与法律依据
《哪吒2》登顶背后: 一场情感共鸣的通关之战
春节贴春联与贴年画 祭奠祖先和祭拜神佛习俗
仙人掌能吃吗
鬼剃头怎么治疗
顶针标准介绍
如何为华为路由器配置DNS服务器以优化网络性能?
尿酸高能吃厄贝沙坦氢氯噻嗪吗