按下并释放按钮1时,我希望标准伺服旋转180度。但是我希望只有当按下按钮2时伺服才能旋转回初始位置(并且一旦释放按钮2就停止旋转)。我现在正确的arduino代码允许伺服通过按下和释放按钮1完全旋转180度,但是伺服也通过按下和释放按钮2而不是一旦释放就错误地旋转回初始位置。任何有关以下代码的帮助将不胜感激:
#include <Servo.h>
Servo myservo;
int pos;
const int buttonPin = 2;
const int buttonPin2 = 3;
int buttonState = 0;
int buttonState2 = 0;
void setup()
{
myservo.attach(9);
pinMode(buttonPin, INPUT);
pinMode(buttonPin2,INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);
if (buttonState == HIGH) {
pos=180;
myservo.write(180);
}
if (buttonState2 == HIGH) {
pos-=1;
myservo.write(pos);
}
}
答案 0 :(得分:0)
你的循环没有任何延迟。您的pos-=1;
行将以高频率执行,伺服无法遵循该行。
一个简单的解决方案是在delay(20);
之后引入一个短暂的延迟(例如myservo.write(pos);
),以便伺服有一段时间实际到达新位置。