Счётчик нажатий по кнопке

ChristmasV
Offline
Зарегистрирован: 19.06.2022
 Здравствуйте всем! Давным давно занимался ардуино и спустя долгое время решил создать код для кнопки и, почему то не хочет выдавать в порт данные, которые записал в функции.
2 проблема. Кто знает помогите пожалуйста! Как сделать так, чтобы ардуинка считала количество нажатий с любого момента, поясню: я нажимаю 2 раза подряд - выполняется один код, к примеру пишется "нажата 2 раза"
3 раза подряд - "нажата 3 раза" и так далее, при этом, что функции, которые уже написаны -  работали(код работал).
 
  bool btn = digitalRead(2);
  bool btns = digitalRead(2);
  bool btnf = digitalRead(2);
bool flag = false;
bool aglf = false;
unsigned long last;
unsigned long timed;
unsigned long timedf;
void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);

}

void loop() {

  bool btn = digitalRead(2);
  bool btns = digitalRead(2);
  bool btnf = digitalRead(2);


  if(btn && !flag && millis() - last > 80){                                       //on                                                                              
    flag = true;
    Serial.println("press");
    last = millis ();
     if(btn && flag &&  millis() - last >50 )   {
  Serial.println("Double");

}
}
 
  if(!btn && flag && millis() - last >300){
    flag = false;                                     //off
    Serial.println ("WWWWWW");

  }

    if(millis () - last >5000 && btn){
     Serial.println("wait 5 sec");                                     //wait 5 sec and go on ALWAYS
  return;
  }   
   if(millis () - last >500 && btn){
     Serial.println("hold");                                                     //hold
  }
}

 

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

1, 2 и 3 решает одна библиотека: https://github.com/kakmyc-github/kakmyc_btn (клик, мультиклик, долгое удержание кнопки .... )

Там есть примеры, думаю разберетесь.