slon2005 Napisano Luty 7, 2020 Udostępnij Napisano Luty 7, 2020 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); }} Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 7, 2020 Udostępnij Luty 7, 2020 (edytowany) 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 Luty 7, 2020 przez Belferek Cytuj Link do komentarza Share on other sites More sharing options...
Waldy Luty 7, 2020 Udostępnij Luty 7, 2020 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 . Cytuj Link do komentarza Share on other sites More sharing options...
Jarewa Luty 8, 2020 Udostępnij Luty 8, 2020 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 } } } Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Pomocna odpowiedź
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!