红外寻迹小车Arduino IDE代码
时间: 2024-12-26 13:24:15 浏览: 27
### 红外寻迹小车 Arduino IDE 示例代码
对于红外寻迹小车而言,核心在于通过红外传感器检测地面颜色变化来调整小车的方向。下面提供一段基础的Arduino IDE代码示例,该代码能够实现基本的循线功能。
#### 定义引脚
```cpp
#define LEFT_MOTOR_PIN_1 5 // 左马达控制引脚之一
#define LEFT_MOTOR_PIN_2 6 // 左马达控制引脚之二
#define RIGHT_MOTOR_PIN_1 9 // 右马达控制引脚之一
#define RIGHT_MOTOR_PIN_2 10 // 右马达控制引脚之二
#define LEFT_SENSOR_PIN A0 // 左侧红外传感器输入引脚
#define MIDDLE_SENSOR_PIN A1 // 中间红外传感器输入引脚
#define RIGHT_SENSOR_PIN A2 // 右侧红外传感器输入引脚
```
这段代码设置了各个组件所使用的具体引脚编号[^1]。
#### 初始化设置
```cpp
void setup() {
pinMode(LEFT_MOTOR_PIN_1, OUTPUT);
pinMode(LEFT_MOTOR_PIN_2, OUTPUT);
pinMode(RIGHT_MOTOR_PIN_1, OUTPUT);
pinMode(RIGHT_MOTOR_PIN_2, OUTPUT);
pinMode(LEFT_SENSOR_PIN, INPUT);
pinMode(MIDDLE_SENSOR_PIN, INPUT);
pinMode(RIGHT_SENSOR_PIN, INPUT);
}
```
此部分初始化了所有需要用到的GPIO引脚模式,确保它们能够在后续操作中正常工作[^2]。
#### 主循环逻辑
```cpp
void loop() {
int leftSensorValue = digitalRead(LEFT_SENSOR_PIN);
int middleSensorValue = digitalRead(MIDDLE_SENSOR_PIN);
int rightSensorValue = digitalRead(RIGHT_SENSOR_PIN);
if (middleSensorValue == LOW && leftSensorValue == HIGH && rightSensorValue == HIGH) {
forward(); // 当中间黑线时前进
} else if (leftSensorValue == LOW || rightSensorValue == LOW){
turnAround(); // 如果任意一侧偏离轨道,则掉头
}
}
// 前进动作
void forward(){
digitalWrite(LEFT_MOTOR_PIN_1, HIGH);
digitalWrite(LEFT_MOTOR_PIN_2, LOW);
digitalWrite(RIGHT_MOTOR_PIN_1, HIGH);
digitalWrite(RIGHT_MOTOR_PIN_2, LOW);
}
// 掉头动作
void turnAround(){
delay(500); // 短暂等待让转弯更稳定
digitalWrite(LEFT_MOTOR_PIN_1, LOW);
digitalWrite(LEFT_MOTOR_PIN_2, HIGH);
digitalWrite(RIGHT_MOTOR_PIN_1, HIGH);
digitalWrite(RIGHT_MOTOR_PIN_2, LOW);
delay(700); // 转弯持续时间
stopMotors();
}
// 停止电机
void stopMotors(){
digitalWrite(LEFT_MOTOR_PIN_1, LOW);
digitalWrite(LEFT_MOTOR_PIN_2, LOW);
digitalWrite(RIGHT_MOTOR_PIN_1, LOW);
digitalWrite(RIGHT_MOTOR_PIN_2, LOW);
}
```
上述代码实现了简单的循迹算法:当三个传感器都感应到白色表面(即返回`HIGH`)表示处于直线行驶状态;而一旦左侧或右侧传感器读取到了黑色线条(即返回`LOW`),则触发转向机制使车辆重新回到轨迹上。
阅读全文