Светодиодная программа с ограничением по времени
Я пытаюсь запрограммировать скетч таким образом, чтобы светодиод горел до тех пор, пока нажата кнопка. Я уже тестировал компоненты и конфигурацию электроники с помощью более простой программы, и все работает, но, похоже, в коде есть проблема. Я хотел узнать, как можно изменить мой скетч, чтобы код заработал:
const int ledPin = 12;
const int switchPin = 2;
const int Time = 100;
int buttonState = 0;
int count = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(switchPin, INPUT);
}
void loop() {
buttonState = digitalRead(switchPin);
while (buttonState == HIGH) {
count++;
delay(100);
}
count=count*10;
if (count>1) {
digitalWrite(ledPin, HIGH);
delay((count*10));
digitalWrite(ledPin, LOW);
}
}
@Dhruv Upadhyay, 👍-1
Обсуждение2 ответа
Лучший ответ:
while (buttonState == HIGH) {
count++;
delay(100);
}
это никогда не выйдет, когда кнопка будет всегда высоко. Вам также следует сбросить счетчик после if.
Вместо этого вам нужно либо сделать buttonState = digitalRead(switchPin);
внутри цикла, либо переделать функцию в конечный автомат, использующий временные метки, например, мигание без задержки.
Попробуйте установить резистор 1-10k на землю, подключенную к входному контакту switchPin, предполагая, что кнопка подключает 5 В к switchPin. Это заставит установить истинный логический 0, когда кнопка не нажата.
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
И как именно это не работает?, @gre_gor
@gre_gor светодиод вообще не реагирует, независимо от того, как долго или сильно я нажимаю кнопку. Когда я использую более простой скетч с подсветкой кнопки, он работает отлично, но не с этим кодом, @Dhruv Upadhyay
Зачем вы увеличиваете значение счетчика? Должен ли светодиод гореть дольше при каждом нажатии кнопки. Если да, то добавьте это в свой вопрос. Подсказка: ничто не останавливает while., @Jot
Вы также пытаетесь узнать, как долго кнопка была нажата?, @VE7JRO