#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 } } }