LED и кнопка

gena321
Offline
Зарегистрирован: 19.01.2019
День добрый!
 
В этой программе LED переключается  когда кнопка нажата болье  2 сек.
Есть;
нажимаем кнопку и држим  больше 2 сек LED = ON, нажимаем кнопку снова и держим больше 2 сек  LED = OFF 
Надо;
нажимаем кнопку и держим  больше 2 сек LED = ON , отпускаем кнопку LED = OFF.
 
int LED1 = PB15;
int button = PB12;

boolean LED1State = false;
boolean LED2State = false;

long buttonTimer = 0;
//long longPressTime = 250;
long longPressTime = 2000;

boolean buttonActive = false;
boolean longPressActive = false;

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(button, INPUT);
  //pinMode(button, INPUT_PULLDOWN);
}

void loop()
{
  if (digitalRead(button) == HIGH)
  {
    if (buttonActive == false)
    {
      buttonActive = true;
      buttonTimer = millis();
    }

    if ((millis() - buttonTimer > longPressTime) && (longPressActive == false))
    {
      longPressActive = true;
      LED1State = !LED1State;
      digitalWrite(LED1, LED1State);
    }
  }

  else

  {
    if (buttonActive == true)
    {
      if (longPressActive == true)
      {
        longPressActive = false;
      }
      else
        buttonActive = false;
    }
  }
}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Вместо 34 и 35 строки просто включайте светодиод digitalWrite(LED1, 1); , а между 41 и 42 гасите digitalWrite(LED1, 0);

gena321
Offline
Зарегистрирован: 19.01.2019
СПАСИБО
Работает как надо.