转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),但是当检测到按钮被按下时,去抖动不应改变逻辑。去抖仅防止触发多个按钮按下检测。
我目前正在进行一个部署模型火箭降落伞的项目。我不是很擅长编码所以我想我会在这里问。该代码旨在使用计时器按下地面上的按钮,然后通过伺服器移动到 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),但是当检测到按钮被按下时,去抖动不应改变逻辑。去抖仅防止触发多个按钮按下检测。