写个Arduino超声波避障小车代码
时间: 2024-05-03 20:02:52 浏览: 314
以下是一个基础的Arduino超声波避障小车代码,可以让小车在遇到障碍物时自动停下或避开障碍物。
首先需要定义引脚:
```c++
const int trigPin = 9; // 超声波发射引脚
const int echoPin = 10; // 超声波接收引脚
const int leftMotorA = 5; // 左电机A引脚
const int leftMotorB = 6; // 左电机B引脚
const int rightMotorA = 10; // 右电机A引脚
const int rightMotorB = 11; // 右电机B引脚
```
然后在 `setup()` 函数中初始化引脚:
```c++
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(leftMotorA, OUTPUT);
pinMode(leftMotorB, OUTPUT);
pinMode(rightMotorA, OUTPUT);
pinMode(rightMotorB, OUTPUT);
}
```
接下来是主循环部分,我们可以使用 `NewPing` 库来方便地测量超声波距离。在距离小于一定值时,让小车停下或者转向避开障碍物。
```c++
#include <NewPing.h>
NewPing sonar(trigPin, echoPin, 200); // 超声波测距最大距离为200cm
void loop() {
delay(50);
int cm = sonar.ping_cm(); // 获取超声波距离
if (cm < 20) { // 距离小于20cm,停止小车
digitalWrite(leftMotorA, LOW);
digitalWrite(leftMotorB, LOW);
digitalWrite(rightMotorA, LOW);
digitalWrite(rightMotorB, LOW);
} else if (cm < 30) { // 距离小于30cm,左转
digitalWrite(leftMotorA, LOW);
digitalWrite(leftMotorB, HIGH);
digitalWrite(rightMotorA, HIGH);
digitalWrite(rightMotorB, LOW);
} else { // 距离大于等于30cm,前进
digitalWrite(leftMotorA, HIGH);
digitalWrite(leftMotorB, LOW);
digitalWrite(rightMotorA, HIGH);
digitalWrite(rightMotorB, LOW);
}
}
```
这是一个简单的超声波避障小车代码,可以根据自己的需求进行修改和优化。
阅读全文