Skocz do zawartości

Przycisk vs liczenie pomocy z kodem


slon2005

Pomocna odpowiedź

Cześć, ja tutaj nowy jestem i dopiero raczkuje w temacie.
w ramach poznawania się z tematem coś tam sobie skrobie pomiędzy kursami forbota i tak chciałem zrobić licznik wciśnięć przycisku. No ale w tym kodzie co napisałem jeżeli przytrzymam przycisk to liczenie idzie dalej, a ja chciałbym, jedno wciśniecie to + 1 nieważne jak długo się trzyma przycisk. Próbowałem pętlą while ale to mi zatrzymuje cały kod. W jaki sposób można to wykonać?

#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
   
int wcisniecie = 0;
void setup(){
 pinMode (8, INPUT_PULLUP);
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Licznik");
  lcd.setCursor(0,1);
  lcd.print("0x");
  ;
}
void loop(){
  if (digitalRead(8) )
 {
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print("Praca");
      wcisniecie = wcisniecie + 1;
      lcd.setCursor(0,1);
      lcd.print(wcisniecie);
      lcd.print("x");
      delay(1000);
}}

 

Link do komentarza
Share on other sites

No to musisz poczekać na zwolnienie przycisku lub/i  nie zliczać jeśli przycisk nie został zwolniony (jest zakleszczony - ciągle wciśnięty). Opóźnienie delay(1000) tego nie wykrywa.

Edytowano przez Belferek
Link do komentarza
Share on other sites

Można by spróbować użyć  debouncer.fell() albo debouncer.rose()) - wyzwalanie poprzez zmianę stanu naciskanego przycisku, używając do tego biblioteki Bounce2 .

Link do komentarza
Share on other sites

wystarczy wstawić flage 

uint8_t c; zmienna globalna

a= digitalread();

   if(c != a){

      c=a;

      if(a==low){

         twój kod

     }

  }

Oczywiście dojdzie drganie styków wiec trzeba to przerobić z warunkiem czasowym

uint8_t c;

uint32_t H;    zmienne globalne





a= digitalread();

if(c != a ){

H= millis();

}



if(millis()- H >= 50){        // 50ms czas stabilizacji drganie styków

   if(c != a){

      c=a;

      if(a==low){

         twój kod

     }

  }

}
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.