arduino超声波控制180度舵机,每次感应旋转180度
时间: 2023-08-16 20:09:08 浏览: 177
arduino 舵机控制实验
5星 · 资源好评率100%
首先,你需要连接你的超声波传感器和舵机到你的Arduino板子上。接下来,你可以使用以下代码控制舵机:
```C++
#include <Servo.h>
Servo myservo; // 创建一个 Servo 对象
int pos = 0; // 舵机的初始位置
void setup() {
myservo.attach(9); // 将舵机连接到数字引脚 9
}
void loop() {
int distance = getDistance(); // 获取超声波传感器测得的距离
if (distance < 20) { // 如果距离小于 20cm
for (pos = 0; pos <= 180; pos += 1) { // 从当前位置旋转到 180 度
myservo.write(pos); // 设置舵机角度
delay(15); // 等待舵机达到目标角度
}
for (pos = 180; pos >= 0; pos -= 1) { // 从 180 度旋转到初始位置
myservo.write(pos); // 设置舵机角度
delay(15); // 等待舵机达到目标角度
}
}
}
int getDistance() {
// 发射一次超声波并等待接收到回波
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int duration = pulseIn(echoPin, HIGH); // 计算回波时间
int distance = duration * 0.034 / 2; // 将回波时间转换为距离
return distance;
}
```
在上面的代码中,`getDistance()` 函数用于获取超声波传感器测得的距离。`loop()` 函数中,如果距离小于 20cm,就会让舵机从当前位置旋转到 180 度,然后再从 180 度旋转回初始位置。在旋转过程中,每次改变舵机角度时,需要等待一段时间,以让舵机达到目标角度。你可以根据实际情况调整等待时间。
阅读全文