arduino超声波避障小车代码hc-sr04超声波测距模块
时间: 2023-09-24 21:09:48 浏览: 67
下面是一个简单的Arduino超声波避障小车代码,使用HC-SR04超声波测距模块:
```
// 定义超声波模块的引脚
#define trigPin 13
#define echoPin 12
// 定义电机驱动模块的引脚
#define motorPin1 9
#define motorPin2 8
#define motorPin3 7
#define motorPin4 6
// 定义小车的运动控制函数
void moveForward() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
}
void moveBackward() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
void turnLeft() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
}
void turnRight() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
}
void stopMoving() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
// 定义超声波测距函数
float getDistance() {
// 发送超声波信号
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 接收超声波回波
float duration = pulseIn(echoPin, HIGH);
// 计算距离(单位:厘米)
float distance = duration * 0.034 / 2;
return distance;
}
void setup() {
// 初始化引脚
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
// 获取距离
float distance = getDistance();
// 判断距离并控制小车运动
if (distance < 10) {
stopMoving();
delay(1000);
turnLeft();
delay(1000);
} else {
moveForward();
}
}
```
在这个示例代码中,我们使用了HC-SR04超声波测距模块来测量小车前方的距离,并根据距离控制小车的运动。如果距离小于10厘米,则停止运动并向左转;否则向前行驶。你可以根据需要修改距离和运动控制的逻辑。