按下按钮后延迟伺服运动 - Arduino
Delaying Movement of Servo after button press - Arduino
最近我一直在做一个项目,主要目标是移动模型火箭上的伺服系统以部署降落伞。我想做的是在我按下按钮 10 秒后降落伞被释放。我已经为此编写了一些代码,但它不起作用,因为它完全停止了代码。有谁知道如何解决这个问题?
#include <Servo.h>
// constants won't change
const int BUTTON_PIN = 7; // Arduino pin connected to button's pin
const int SERVO_PIN = 9; // Arduino pin connected to servo motor's pin
Servo servo; // create servo object to control a servo
// variables will change:
int angle = 0; // the current angle of servo motor
int lastButtonState; // the previous state of button
int currentButtonState; // the current state of button
void setup() {
Serial.begin(9600); // initialize serial
pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(angle);
currentButtonState = digitalRead(BUTTON_PIN);
}
void loop() {
lastButtonState = currentButtonState; // save the last state
currentButtonState = digitalRead(BUTTON_PIN); // read new state
if(lastButtonState == HIGH && currentButtonState == LOW) {
Serial.println("The button is pressed");
time.delay(10000)
// change angle of servo motor
if(angle == 0)
angle = 90;
else
if(angle == 90)
angle = 0;
// control servo motor arccoding to the angle
servo.write(angle);
}
}
在 Arduino 中,延迟通常用 delay(10000);
完成(10 秒)。我从未见过或听说过 time.delay()
函数,所以这可能是问题所在。否则代码看起来应该像你想要的那样工作。
这也可能取决于您 运行 它所在的电路板。我记得在 ESP8266 上长时间使用 delay()
时遇到问题,尽管我很确定它可以持续数十秒。
最近我一直在做一个项目,主要目标是移动模型火箭上的伺服系统以部署降落伞。我想做的是在我按下按钮 10 秒后降落伞被释放。我已经为此编写了一些代码,但它不起作用,因为它完全停止了代码。有谁知道如何解决这个问题?
#include <Servo.h>
// constants won't change
const int BUTTON_PIN = 7; // Arduino pin connected to button's pin
const int SERVO_PIN = 9; // Arduino pin connected to servo motor's pin
Servo servo; // create servo object to control a servo
// variables will change:
int angle = 0; // the current angle of servo motor
int lastButtonState; // the previous state of button
int currentButtonState; // the current state of button
void setup() {
Serial.begin(9600); // initialize serial
pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(angle);
currentButtonState = digitalRead(BUTTON_PIN);
}
void loop() {
lastButtonState = currentButtonState; // save the last state
currentButtonState = digitalRead(BUTTON_PIN); // read new state
if(lastButtonState == HIGH && currentButtonState == LOW) {
Serial.println("The button is pressed");
time.delay(10000)
// change angle of servo motor
if(angle == 0)
angle = 90;
else
if(angle == 90)
angle = 0;
// control servo motor arccoding to the angle
servo.write(angle);
}
}
在 Arduino 中,延迟通常用 delay(10000);
完成(10 秒)。我从未见过或听说过 time.delay()
函数,所以这可能是问题所在。否则代码看起来应该像你想要的那样工作。
这也可能取决于您 运行 它所在的电路板。我记得在 ESP8266 上长时间使用 delay()
时遇到问题,尽管我很确定它可以持续数十秒。