arduino 超声波控制舵机,第一次逆时针转180度,第二次顺时针转180度
时间: 2023-12-01 14:02:57 浏览: 54
你可以使用以下代码实现这个功能:
```C++
#include <Servo.h>
Servo myservo; // 创建一个舵机对象
int trigPin = 9; // 超声波模块的 trig 引脚
int echoPin = 10; // 超声波模块的 echo 引脚
long duration, cm;
void setup() {
myservo.attach(11); // 将舵机连接到数字引脚 11
pinMode(trigPin, OUTPUT); // 将 trig 引脚设置为输出模式
pinMode(echoPin, INPUT); // 将 echo 引脚设置为输入模式
Serial.begin(9600); // 初始化串口
}
void loop() {
// 发送一个 10 微秒的高电平信号到 trig 引脚
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取 echo 引脚的脉冲宽度,并将其转换为距离
duration = pulseIn(echoPin, HIGH);
cm = duration / 58;
// 如果距离小于 30 厘米,则舵机逆时针旋转 180 度
if (cm < 30) {
for (int angle = 0; angle <= 180; angle += 1) {
myservo.write(angle);
delay(15);
}
delay(1000); // 停留 1 秒
}
// 如果距离大于等于 30 厘米,则舵机顺时针旋转 180 度
else {
for (int angle = 180; angle >= 0; angle -= 1) {
myservo.write(angle);
delay(15);
}
delay(1000); // 停留 1 秒
}
}
```
这段代码使用超声波模块测量距离,如果距离小于 30 厘米,则舵机逆时针旋转 180 度;如果距离大于等于 30 厘米,则舵机顺时针旋转 180 度。在每次旋转完成后,程序会停留 1 秒。你可以根据实际情况调整距离和停留时间的参数。