0

我希望标准伺服在按下并释放按钮 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); 

  } 
} 
4

1 回答 1

0

您的循环没有任何延迟。您的pos-=1;线路将以高频执行,而伺服器无法跟随。

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

于 2017-05-18T17:51:02.567 回答