转90度后如何让Arduinoreturn转0度

How do I get Arduino to return to 0 degrees after turning to 90 degrees

我目前正在进行一个部署模型火箭降落伞的项目。我不是很擅长编码所以我想我会在这里问。该代码旨在使用计时器按下地面上的按钮,然后通过伺服器移动到 90 度展开降落伞。我希望舵机在病房后 return 到 0 度,而不必再次按下按钮。此代码是否有效?

#include <Servo.h>

// constants won't change
const int BUTTON_PIN = 7; 
const int SERVO_PIN  = 9; 

Servo servo; 

int angle = 0;        
int lastButtonState;    
int currentButtonState; 

void setup() {
  Serial.begin(9600);                
  pinMode(BUTTON_PIN, INPUT_PULLUP); 
  servo.attach(SERVO_PIN);           

  servo.write(angle);
  currentButtonState = digitalRead(BUTTON_PIN);
}

void loop() {
  lastButtonState    = currentButtonState;      
  currentButtonState = digitalRead(BUTTON_PIN); 

  if(lastButtonState == HIGH && currentButtonState == LOW) {
    Serial.println("The button is pressed");
    delay(10000);
    
   
    if(angle == 0)
      angle = 90;
    else
    if(angle == 90)
      angle = 0;

    delay(5000);
    servo.write(0);

  }
}


当前您在按下按钮后等待 10 秒(10 000 毫秒)。按下按钮后,除了 Serial.println(...) 之外什么都不做。然后检查 if/else 语句一次。为了使您的代码正常工作,您需要类似

if (buttonPressed == true) {
    // Wait for 10 seconds
    delay(10000);

    // Turn servo to 90 degrees
    servo.write(90);

    // Wait for 5 seconds
    delay(5000);

    // Turn servo to 0 degrees
    servo.write(0);
}

要检测您的按钮是否被按下,您可能需要添加去抖动(检查 https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce),但是当检测到按钮被按下时,去抖动不应改变逻辑。去抖仅防止触发多个按钮按下检测。