使用两个按钮输入进行伺服方向控制

时间:2017-05-18 16:45:52

标签: button arduino rotation servo

按下并释放按钮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); 

  } 
} 

1 个答案:

答案 0 :(得分:0)

你的循环没有任何延迟。您的pos-=1;行将以高频率执行,伺服无法遵循该行。

一个简单的解决方案是在delay(20);之后引入一个短暂的延迟(例如myservo.write(pos);),以便伺服有一段时间实际到达新位置。