Интеграция 2 кнопок для включения и выключения светодиода.
Привет, ребята, нужна ваша помощь в проверке этой программы по включению и выключению светодиода с помощью двух кнопок. На самом деле я хочу, чтобы мой светодиод оставался включенным, когда я нажимаю и даже оставляю кнопку-1 и включенной. нажав и оставив кнопку-2, я хочу, чтобы светодиод выключился, и независимо от того, сколько раз я нажимаю кнопку-1, я хочу, чтобы он включил светодиод, а кнопка-2 должна только выключить светодиод. но с помощью моей программы я могу видеть, что светодиод находится только в ВЫСОКОМ состоянии. Он не переходит в НИЗКОЕ состояние при нажатии кнопки-2.
Это мой скетч :-
/* LED CONTROLLED WITH 2 PUSH BUTTON PROJECT
BY ARSH BANSAL
CIRCUIT :-
i) LEDPIN CONNECTED PIN 13.
ii) PUSHBUTTON1 CONNECTED TO PIN 8.
iii) PUSHBUTTON2 CONNECTED TO PIN 7.
iv) BOTH THE PUSH BUTTONS CONNECTED PARALLELY, EACH WITH A 1K PULLUP RESISTOR AND BOTH THE PUSH BUTTONS CONNECTED TO 5V SUPPLY.
*/
int ledpin = 13;
int pushbutton1 = 8;
int pushbutton2 = 7;
boolean lastbuttonstate1 = LOW;
boolean lastbuttonstate2 = LOW;
void setup()
{
pinMode(ledpin,OUTPUT);
pinMode(pushbutton1,INPUT);
pinMode(pushbutton2,INPUT);
}
void loop()
{
if ( digitalRead(pushbutton1)== HIGH && digitalRead(pushbutton2) == LOW && lastbuttonstate1 == LOW )
{ digitalWrite (ledpin,HIGH) ;}
else ( digitalRead(pushbutton1) == LOW && digitalRead(pushbutton2)== LOW && lastbuttonstate1 == HIGH)
; { digitalWrite (ledpin,HIGH) ; }
if ( digitalRead(pushbutton1)== LOW && digitalRead(pushbutton2) == HIGH && lastbuttonstate2 == LOW)
{ digitalWrite (ledpin,LOW) ;}
else ( digitalRead(pushbutton1) == LOW && digitalRead(pushbutton2)== LOW && lastbuttonstate2 == HIGH)
; { digitalWrite (ledpin,LOW) ; }
}
@MrDeepThought, 👍0
1 ответ
Лучший ответ:
▲ 1
В этом случае вам лучше запомнить состояние светодиода, а не состояние кнопок:
- Если светодиод выключен и кнопка BUTTON1 нажата, включите светодиод.
- Если светодиод горит и КНОПКА 2 НАЖАТА, то выключите светодиод.
Например:
void loop() {
static bool ledState = false; // Светодиод по умолчанию выключен
if ((digitalRead(pushbutton1) == LOW) && !ledState) { // 1 нажато & светодиод выключен
digitalWrite(ledpin, HIGH);
ledState = true;
}
if ((digitalRead(pushbutton2) == LOW) && ledState) { // 2 нажато & светодиод горит
digitalWrite(ledpin, LOW);
ledState = false;
}
}
,
@Majenko
Смотрите также:
- Остановить мигание светодиодов
- Код Arduino для управления 4 светодиодами с 4 кнопок
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- Светодиод с кнопочным управлением Arduino со сборкой AVR
- Как повторить другое действие внутри цикла?
- Изменение состояния светодиода с помощью кнопки приводит к нестабильному результату
- Кнопка переключения переключает между операторами обращения с разблокированием кнопки
- ШИМ-управление, как остановить мерцание светодиода?
Я только что понял свою ошибку. Мне нужно было использовать оператор if после else, чтобы проверить соответствующие условия. Спасибо за ваши усилия., @MrDeepThought