arduino红外两路寻迹c语言程序,Arduino寻迹小车程序
时间: 2023-08-13 22:12:42 浏览: 121
以下是一个基于Arduino的红外两路寻迹小车程序:
```c++
int leftPin = 2; // 左边传感器连接的引脚
int rightPin = 3; // 右边传感器连接的引脚
int leftVal; // 左边传感器的值
int rightVal; // 右边传感器的值
int leftSpeed = 5; // 左边电机的PWM引脚
int rightSpeed = 6; // 右边电机的PWM引脚
int leftMotor1 = 4; // 左边电机的正向控制引脚
int leftMotor2 = 7; // 左边电机的反向控制引脚
int rightMotor1 = 8; // 右边电机的正向控制引脚
int rightMotor2 = 9; // 右边电机的反向控制引脚
void setup() {
pinMode(leftPin, INPUT); // 左边传感器设为输入模式
pinMode(rightPin, INPUT); // 右边传感器设为输入模式
pinMode(leftSpeed, OUTPUT); // 左边电机PWM引脚设为输出模式
pinMode(rightSpeed, OUTPUT); // 右边电机PWM引脚设为输出模式
pinMode(leftMotor1, OUTPUT); // 左边电机正向控制引脚设为输出模式
pinMode(leftMotor2, OUTPUT); // 左边电机反向控制引脚设为输出模式
pinMode(rightMotor1, OUTPUT); // 右边电机正向控制引脚设为输出模式
pinMode(rightMotor2, OUTPUT); // 右边电机反向控制引脚设为输出模式
}
void loop() {
leftVal = digitalRead(leftPin); // 读取左边传感器的值
rightVal = digitalRead(rightPin); // 读取右边传感器的值
if (leftVal == HIGH && rightVal == HIGH) { // 如果两边都检测到黑线
digitalWrite(leftMotor1, HIGH); // 左边电机正转
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, HIGH); // 右边电机正转
digitalWrite(rightMotor2, LOW);
analogWrite(leftSpeed, 200); // 控制左边电机的速度
analogWrite(rightSpeed, 200); // 控制右边电机的速度
} else if (leftVal == LOW && rightVal == HIGH) { // 如果只有右边检测到黑线
digitalWrite(leftMotor1, HIGH); // 左边电机正转
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW); // 右边电机反转
digitalWrite(rightMotor2, HIGH);
analogWrite(leftSpeed, 150); // 控制左边电机的速度
analogWrite(rightSpeed, 100); // 控制右边电机的速度
} else if (leftVal == HIGH && rightVal == LOW) { // 如果只有左边检测到黑线
digitalWrite(leftMotor1, LOW); // 左边电机反转
digitalWrite(leftMotor2, HIGH);
digitalWrite(rightMotor1, HIGH); // 右边电机正转
digitalWrite(rightMotor2, LOW);
analogWrite(leftSpeed, 100); // 控制左边电机的速度
analogWrite(rightSpeed, 150); // 控制右边电机的速度
} else { // 如果两边都没有检测到黑线
digitalWrite(leftMotor1, LOW); // 左边电机停止
digitalWrite(leftMotor2, LOW);
digitalWrite(rightMotor1, LOW); // 右边电机停止
digitalWrite(rightMotor2, LOW);
analogWrite(leftSpeed, 0); // 控制左边电机的速度为0
analogWrite(rightSpeed, 0); // 控制右边电机的速度为0
}
}
```
在该代码中,通过左右两个红外传感器检测地面上是否有黑线,根据检测到的情况控制小车左右转动或停止。其中,通过PWM控制电机速度,使小车能够平稳地运行。
阅读全文