arduino超声波控制舵机转180度循环一次
时间: 2023-07-30 20:10:11 浏览: 102
bluetoothOpenDoor_Arduino蓝牙控制舵机_
5星 · 资源好评率100%
你可以使用以下代码实现:
```
#include <Servo.h>
Servo myservo; // 创建一个舵机对象
int trigPin = 9; // 超声波模块的Trig引脚
int echoPin = 10; // 超声波模块的Echo引脚
long duration, distance; // 声波探测距离的变量
void setup() {
myservo.attach(8); // 将舵机信号线连接到Arduino的8号引脚
pinMode(trigPin, OUTPUT); // 将Trig引脚设置为输出模式
pinMode(echoPin, INPUT); // 将Echo引脚设置为输入模式
Serial.begin(9600); // 打开串口通信
}
void loop() {
// 发送10微秒的高电平脉冲,启动声波模块
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取声波模块返回的脉冲宽度,计算探测距离
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// 控制舵机转动
for (int angle = 0; angle <= 180; angle += 1) { // 舵机从0度转动到180度
myservo.write(angle); // 设置舵机角度
delay(15); // 等待舵机到达目标角度
}
for (int angle = 180; angle >= 0; angle -= 1) { // 舵机从180度转动到0度
myservo.write(angle); // 设置舵机角度
delay(15); // 等待舵机到达目标角度
}
// 打印探测距离
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500); // 延时500毫秒
}
```
在这个代码中,我们使用了`Servo`库来控制舵机的转向,使用`pulseIn()`函数读取超声波模块返回的脉冲宽度,并通过一定的计算得出探测距离。然后我们通过循环让舵机从0度转动到180度,再从180度转动到0度,实现舵机的循环转动。最后我们打印出探测距离,并延时500毫秒等待下一次循环。
阅读全文