Интеграция 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) ; }
    }

, 👍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;
    }
}
,

Я только что понял свою ошибку. Мне нужно было использовать оператор if после else, чтобы проверить соответствующие условия. Спасибо за ваши усилия., @MrDeepThought