用舵机旋转超声波传感器的自动避障小车代码
时间: 2024-05-07 11:22:49 浏览: 7
以下是使用Arduino控制舵机旋转超声波传感器的自动避障小车代码:
```
#include <Servo.h>
Servo myservo; // 创建一个舵机对象
int servoPin = 9; // 舵机的信号引脚
int trigPin = 7; // 超声波传感器的触发引脚
int echoPin = 6; // 超声波传感器的回声引脚
int motorPin1 = 5; // 左电机引脚1
int motorPin2 = 4; // 左电机引脚2
int motorPin3 = 3; // 右电机引脚1
int motorPin4 = 2; // 右电机引脚2
long duration, distance; // 超声波传感器的回声时间和距离
void setup() {
myservo.attach(servoPin); // 将舵机对象连接到舵机信号引脚
pinMode(trigPin, OUTPUT); // 设置超声波传感器触发引脚的模式为输出
pinMode(echoPin, INPUT); // 设置超声波传感器回声引脚的模式为输入
pinMode(motorPin1, OUTPUT); // 设置左电机引脚1的模式为输出
pinMode(motorPin2, OUTPUT); // 设置左电机引脚2的模式为输出
pinMode(motorPin3, OUTPUT); // 设置右电机引脚1的模式为输出
pinMode(motorPin4, OUTPUT); // 设置右电机引脚2的模式为输出
}
void loop() {
// 将超声波传感器触发引脚输出高电平持续10微秒
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 计算超声波传感器回声时间
duration = pulseIn(echoPin, HIGH);
// 计算距离
distance = duration / 58.2;
// 控制舵机旋转
if (distance < 20) {
myservo.write(90);
} else {
myservo.write(0);
}
// 控制电机
if (distance < 20) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
} else {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
}
}
```
该代码使用了Servo库控制舵机旋转,并使用pulseIn函数计算超声波传感器回声时间和距离。根据距离的不同,控制电机的旋转方向,实现自动避障功能。