首页 > 解决方案 > 如何在开关盒中倒车

问题描述

我有 2 个 LED,当我按下按钮时,它应该按以下顺序更改模式:关闭,第一个 LED 亮,两个 LED 都亮,第二个 LED 亮。现在我想添加第二个按钮,它的作用相同但相反:第二个 LED 亮,两个 LED 亮,第一个 LED 亮,灭。

我尝试创建第二个开关盒,但它不起作用。

代码:

void loop()
{
  increase.update();
  decrease.update();

  //~~~Increase LED Pattern~~~
  if (increase.fell())
  {
    isPressed = true;
    changePattern();
  }
  else if (digitalRead(Button_Mode) == HIGH)
  {
    isPressed = false;
  }


  //~~~Decrease LED Pattern~~~
  if (decrease.fell())
  {
    isPressed = true;
    decreasePattern();
  }
  else if (digitalRead(Button_Mode) == HIGH)
  {
    isPressed = false;
  }
}


//-----------------Methods------------------
//~~~selects a pattern~~~
void increasePattern()
{
  switch (lightPattern)
  {
    case OFF:
      lightPattern = LED_1;
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, LOW);
      break;

    case LED_1:
      lightPattern = LED_12;
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      break;

    case LED_12:
      lightPattern = LED_2;
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, HIGH);
      break;

    case LED_2:
      lightPattern = OFF;
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, LOW);
      break;
  }
}


void decreasePattern()
{
  switch (lightPattern)
  {
    case LED_2:
      lightPattern = LED_12;
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, LOW);
      break;

    case LED_12:
      lightPattern = LED_1;
      digitalWrite(LED1, HIGH);
      digitalWrite(LED2, HIGH);
      break;

    case LED_1:
      lightPattern = OFF;
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, HIGH);
      break;

    case OFF:
      lightPattern = LED_2;
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, LOW);
      break;
  }
}

先感谢您。

标签: c++arduino

解决方案


int stateLed1 = HIGH;

digitalWrite(LED_1, stateLed1);
digitalWrite(LED_2, !stateLed1);

推荐阅读