Отключите кнопку в течение 30 секунд после нажатия arduino

#button #timer #arduino #disabled-input

#кнопка #таймер #arduino #отключен-ввод

Вопрос:

Я работаю с Arduino, так как я новичок, мне нужна ваша помощь, пожалуйста, спасибо! Я включаю светодиодную подсветку с помощью кнопки в течение 30 секунд, все работает нормально, но есть одна проблема после нажатия кнопки свет включается с 0 секунды, но если я нажму кнопку через 15 секунд, она снова запустится с 0 секунды, так что есть ли способ отключить кнопку также на 30 секунд, чтобы она работала только 30 секунд, даже если я нажму кнопку, и кнопка будет работать только тогда, когда свет через 30 секунд.

 int BUTTON = 2;  int BUTTONstate = 0;  int LED = 8;   void setup() {  pinMode(BUTTON, INPUT);  pinMode(LED, OUTPUT);   }    void loop() {  static unsigned long startTime = 0;   BUTTONstate = digitalRead(BUTTON);  if (BUTTONstate == HIGH){  if (millis() - startTime gt;= 30000)  digitalWrite(LED, LOW);   }   else{  digitalWrite(LED, HIGH);  startTime = millis();  }  }  

Комментарии:

1. это один из немногих случаев, когда задержка блокировки сделает то, что вам нужно. Просто задержитесь на 30 секунд.

2. задержка включения светодиода через 30 секунд

Ответ №1:

У меня правильный код работает нормально:

 int pin1 = 13;  int LED = 8;  void setup()  {  pinMode(pin1, INPUT_PULLUP);  pinMode(LED, OUTPUT);  }   long offAt = 0;  void loop()  {  if ((digitalRead(LED) == LOW ) amp;amp; (digitalRead(pin1) == LOW) ) //if LED is off and button is pressed [low because it has pullup resistor]  {   digitalWrite(LED, HIGH);  offAt = millis()   30000; //store var of now   5 seconds  }   if (digitalRead(LED) == HIGH) //if led is on  {  if (millis() gt;= offAt) //see if it's time to turn off LED  {  digitalWrite(LED, LOW); //it's time. this also re-enables the button  }  }  }