Почему я не могу сразу выключить светодиод с помощью этого скетча?
Я надеюсь, что светодиод через какое-то время погаснет. Кроме того, я надеюсь, что смогу сразу же выключить светодиод, когда он затухнет, но я могу только погаснуть.
const int buttonPin = 2;
const int ledPin = 9;
const int fadingDelay = 20000;
int buttonState = 0;
boolean fadingState = false;
void setup() {
// инициализируем вывод светодиода как выход:
pinMode(ledPin, OUTPUT);
// инициализируем вывод кнопки как вход:
pinMode(buttonPin, INPUT);
}
void loop() {
// читаем состояние значения кнопки:
buttonState = digitalRead(buttonPin);
// проверяем, была ли нажата кнопка
if (buttonState == HIGH) {
buttonState = LOW;
// проверяем текущий статус светодиода (вкл/выкл)
if (fadingState == false) {
// включаем светодиод
for (int i = 255; i >= 0; i -= 5) {
if (buttonState == HIGH && fadingState == true) {
analogWrite(ledPin, 0); //немедленно выключаем
i=-1;
}
analogWrite(ledPin, i);
delay(fadingDelay);
}
fadingState = false; // сохраняем текущее состояние светодиода (вкл/выкл)
}
}
}
@KongYee Tang, 👍0
Обсуждение1 ответ
Лучший ответ:
Я нигде не вижу места, где вы назначаете fadingState как true
. Я не могу понять эту часть
if (fadingState == false) {
// включаем светодиод
for (int i = 255; i >= 0; i -= 5) {
if (buttonState == HIGH && fadingState == true) {
analogWrite(ledPin, 0); //немедленно выключаем
i=-1;
}
analogWrite(ledPin, i);
delay(fadingDelay);
}
Если вы вводите условие if
с оператором fadingState как false
. Затем в цикле for
у вас есть if условие
, в котором оператор
имеет значение fadingState == true
. Если да, то входя как Ложь, тогда почему вы ищете Истинное Состояние.
Затем, если вам удастся отсортировать это, добавьте break;
в это условие if
, чтобы, когда светодиод погаснет, вы выйдете из этого цикла for
.
И здесь вы устанавливаете состояние кнопки как низкое buttonState = LOW
, если сначала условие If, затем в этом вложенном if
без чтения buttonState
вы все еще ищете его как HIGH
.
- Несколько условий оператора if
- Светодиоды: разница между общим анодом и общим катодом
- Остановить мигание светодиодов
- Интеграция 2 кнопок для включения и выключения светодиода.
- Управление цифровой адресной светодиодной лентой RGB 12 В с помощью Arduino
- Код Arduino для управления 4 светодиодами с 4 кнопок
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- Мигните светодиодом 5 раз с помощью цикла for
см. пример BlinkWithouDelay. теперь ваш эскиз останавливается на 20 секунд., @Juraj
Ваш код беспорядок и не будет работать должным образом. Вам необходимо четко определить, *что* вы хотите делать, прежде чем мы сможем вам помочь., @Duncan C