Как написать программу, которая включает оба встроенных светодиода ТОЛЬКО при включении ОБОИХ выключателей

int btn1=0;
int btn2=0;

void setup()
{
  // put your setup code here, to run once:

  pinMode(GREEN_LED,OUTPUT);
  digitalWrite(GREEN_LED,HIGH);
  pinMode(RED_LED,OUTPUT);
  digitalWrite(RED_LED,HIGH);
}

void loop()
{
  // put your main code here, to run repeatedly:

  int btn1 = digitalRead(P2_3);
  int btn2 = digitalRead(P2_4);
  if(btn1==0&&btn2==0){
    digitalWrite(GREEN_LED,LOW);
    digitalWrite(RED_LED,LOW);
  }

  else{
   digitalWrite(GREEN_LED,HIGH);
   digitalWrite(RED_LED,HIGH);


  }
}

, 👍-1

Обсуждение

Вы сделали что-нибудь, чтобы осудить пуговицы? Я предполагаю, что это кнопки из ваших имен переменных., @RubberDuck

И где вы определяете входы как входы?, @gre_gor

Проверка логических операций "И" https://www.arduino.cc/reference/en/language/structure/boolean-operators/logicaland/, @MatsK


1 ответ


1

Вы уверены, что btn1 и btn2 равны 0? Попробуйте поставить серийный отпечаток и проверить значения.

Кроме того, размер вашей программы может быть значительно уменьшен:

Во-первых: создайте функцию для включения или выключения обеих кнопок:

    void SwitchLed(int state)
    {
        digitalWrite(GREEN_LED, state);
        digitalWrite(RED_LED,   state);
    } 

Ваши программные функции станут:

    void setup()
    {
      pinMode(GREEN_LED,OUTPUT);
      pinMode(GREEN_LED,OUTPUT);

      Switch(HIGH);
    }

    void loop()
    {
      int btn1 = digitalRead(P2_3);
      int btn2 = digitalRead(P2_4);
      Switch(btn1==0&&btn2==0 ? LOW : HIGH);
    }

Также рекомендуется использовать ( и ) вокруг (под) выражений, таких как последняя строка:

      Switch((btn1 == 0) && (btn2 == 0) ? LOW : HIGH);
,