arduino超声波控制360度舵机每感应一次逆时针转180度,只执行一次
时间: 2023-12-17 18:02:52 浏览: 27
可以参考以下代码实现:
```c++
#include <Servo.h>
Servo myServo;
const int trigPin = 7;
const int echoPin = 6;
int distance;
int angle = 0;
bool turned = false;
void setup() {
Serial.begin(9600);
myServo.attach(9);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
distance = pulseIn(echoPin, HIGH) / 58;
if (distance < 50) {
if (!turned) {
myServo.write(180);
turned = true;
}
} else {
if (turned) {
myServo.write(0);
turned = false;
}
}
}
```
该代码使用了一个超声波模块来测量距离,并根据距离来控制舵机的转动。当距离小于50cm时,舵机会逆时针转动180度;当距离大于等于50cm时,舵机会顺时针转动回到初始位置。为了确保舵机只执行一次逆时针转动,使用了一个`turned`变量来记录状态。