arduino超声波避障小车代码
时间: 2023-09-10 11:05:42 浏览: 152
以下是一个基于Arduino的超声波避障小车代码示例:
```C++
// 引入头文件
#include <Servo.h>
// 定义超声波模块引脚
#define trigPin 3
#define echoPin 2
// 定义舵机引脚
#define servoPin 9
// 定义电机引脚
#define motorL1 5
#define motorL2 6
#define motorR1 10
#define motorR2 11
// 定义电机速度
#define speed 200
// 定义超声波测距变量
long duration;
int distance;
// 创建舵机对象
Servo servo;
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置超声波模块引脚为输入/输出
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// 设置舵机引脚为输出
servo.attach(servoPin);
// 设置电机引脚为输出
pinMode(motorL1, OUTPUT);
pinMode(motorL2, OUTPUT);
pinMode(motorR1, OUTPUT);
pinMode(motorR2, OUTPUT);
}
void loop() {
// 发送超声波信号
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 接收超声波信号
duration = pulseIn(echoPin, HIGH);
distance = duration / 58.0;
// 输出距离
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// 根据距离控制舵机和电机运动
if (distance > 20) {
// 舵机中心位置
servo.write(90);
// 前进
digitalWrite(motorL1, HIGH);
digitalWrite(motorL2, LOW);
digitalWrite(motorR1, HIGH);
digitalWrite(motorR2, LOW);
// 设置电机速度
analogWrite(motorL1, speed);
analogWrite(motorR1, speed);
} else if (distance > 10) {
// 舵机向右转
servo.write(45);
// 左转
digitalWrite(motorL1, LOW);
digitalWrite(motorL2, HIGH);
digitalWrite(motorR1, HIGH);
digitalWrite(motorR2, LOW);
// 设置电机速度
analogWrite(motorL2, speed);
analogWrite(motorR1, speed);
} else {
// 舵机向左转
servo.write(135);
// 右转
digitalWrite(motorL1, HIGH);
digitalWrite(motorL2, LOW);
digitalWrite(motorR1, LOW);
digitalWrite(motorR2, HIGH);
// 设置电机速度
analogWrite(motorL1, speed);
analogWrite(motorR2, speed);
}
}
```
该代码使用了一个舵机和两个电机来控制小车的运动,根据超声波模块测量的距离来控制小车的转向和速度。当距离大于20cm时,小车前进;当距离在10-20cm之间时,小车向左转;当距离小于10cm时,小车向右转。你可以根据自己的需要修改代码中的参数来适应不同的场景。
阅读全文