arduino超声波控制两个舵机,每次旋转180度,循环三次
时间: 2023-08-16 21:09:08 浏览: 171
你可以使用以下代码实现该功能:
```c++
#include <Servo.h>
#define trigPin 9
#define echoPin 10
Servo servo1;
Servo servo2;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
servo1.attach(6);
servo2.attach(7);
}
void loop() {
for (int i = 0; i < 3; i++) {
// 旋转到初始位置
servo1.write(0);
servo2.write(0);
delay(1000);
// 测量距离
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.println(distance);
// 如果距离小于30cm,则旋转舵机
if (distance < 30) {
for (int j = 0; j < 180; j++) {
servo1.write(j);
servo2.write(j);
delay(15);
}
for (int j = 180; j > 0; j--) {
servo1.write(j);
servo2.write(j);
delay(15);
}
}
}
}
```
在这段代码中,我们使用了 `Servo` 库来控制两个舵机的旋转。我们首先将两个舵机分别连接到 Arduino 的 6 号和 7 号引脚,并在 `setup` 函数中将它们初始化。然后我们通过超声波测量距离,如果距离小于 30cm,则执行舵机旋转的循环。在每次循环中,我们将舵机从 0 度旋转到 180 度,再从 180 度旋转回 0 度,每一步旋转都需要延迟一段时间以达到平滑过渡的效果。最后,我们在主循环中使用一个 `for` 循环来循环执行三次整个操作。
阅读全文