Arduino循迹机器人:实现左右转弯和沿墙运动
Arduino循迹机器人:实现左右转弯和沿墙运动
本项目将带你使用Arduino IDE编写代码,让你的机器人能够进行循迹运动。机器人将根据地面传感器检测到的黑线进行动作:
- 未检测到黑线时直行
- 两边同时感应到黑线时,交替进行左转和右转
- 右转后开始沿墙运动
以下是完整的Arduino代码:
// 定义引脚
const int leftSensor = A0;
const int rightSensor = A1;
const int leftMotor1 = 2;
const int leftMotor2 = 3;
const int rightMotor1 = 4;
const int rightMotor2 = 5;
// 定义变量
int leftValue = 0;
int rightValue = 0;
int count = 0;
void setup() {
// 初始化引脚
pinMode(leftSensor, INPUT);
pinMode(rightSensor, INPUT);
pinMode(leftMotor1, OUTPUT);
pinMode(leftMotor2, OUTPUT);
pinMode(rightMotor1, OUTPUT);
pinMode(rightMotor2, OUTPUT);
}
void loop() {
// 读取传感器数值
leftValue = analogRead(leftSensor);
rightValue = analogRead(rightSensor);
// 判断是否检测到黑线
if (leftValue < 500 && rightValue < 500) {
// 未检测到黑线,直行
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
} else if (leftValue < 500 && rightValue > 500) {
// 左边检测到黑线,右转
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
delay(500);
// 计数器加一
count++;
} else if (leftValue > 500 && rightValue < 500) {
// 右边检测到黑线,左转
digitalWrite(leftMotor1, LOW);
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH);
digitalWrite(rightMotor2, LOW);
delay(500);
// 计数器加一
count++;
}
// 计数器为4时开始沿墙运动
if (count == 4) {
digitalWrite(leftMotor1, HIGH);
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW);
digitalWrite(rightMotor2, HIGH);
}
}
代码解析:
- 定义引脚和变量: 首先,我们定义了传感器和电机驱动引脚,以及用于存储传感器数值和转弯次数的变量。
- 初始化: 在
setup()函数中,我们将所有引脚设置为输入或输出模式。 - 读取传感器: 在
loop()函数中,我们使用analogRead()函数读取左右传感器的模拟值,并将其存储在leftValue和rightValue变量中。 - 判断动作: 根据传感器数值,我们判断机器人应该直行、左转还是右转。如果左右传感器都检测到黑线,则根据计数器
count的值决定左转还是右转。 - 沿墙运动: 当计数器
count达到4时,机器人开始沿墙运动,即始终保持右侧检测到黑线。
注意事项:
analogRead()函数返回的值范围为0-1023,你需要根据实际情况调整代码中的阈值500。delay()函数用于控制机器人转弯的时间,你可以根据需要调整延迟时间。
通过学习这段代码,你可以了解如何使用Arduino控制机器人进行简单的循迹运动。你可以根据自己的需求修改代码,例如添加避障功能或更复杂的运动模式。
原文地址: https://www.cveoy.top/t/topic/jpRt 著作权归作者所有。请勿转载和采集!