luke88 Napisano Listopad 17, 2021 Udostępnij Napisano Listopad 17, 2021 #include <LiquidCrystal.h> #define Blue 13 #define Red 12 #define Reset 11 int b = 0; int r = 0; LiquidCrystal lcd(7, 6, 5 ,4, 3, 2); void setup() { pinMode(Blue, INPUT_PULLUP); pinMode(Red, INPUT_PULLUP); lcd.begin(16, 2); lcd.clear(); lcd.print("Gracz 1"); lcd.setCursor(7, 0); lcd.print("|"); lcd.setCursor(7, 1); lcd.print("|"); lcd.setCursor(8, 0); lcd.print("Gracz 2"); lcd.setCursor(0, 1); lcd.print("Pkt:"); lcd.setCursor(8, 1); lcd.print("Pkt:"); } void loop() { for(b = 0; digitalRead(Blue) == LOW; b++) { lcd.setCursor(6, 1); lcd.print(b); } } Cześć, mam problem. Chciałbym, aby po jednokrotnym wciśnięciu przycisku wartość zmiennej b zwiększała się o jeden. Jednak przez instrukcję warunkową jej wartość zwiększa się o wiele więcej (jak zauważyłem w zależności o długości czasu wciśnięcia przycisku). Jak można ustawić stałą zmianę wartości zmiennej? Problem może okaże się banalny, ale mi sprawia kłopot. Proszę o pomoc.
pmochocki Listopad 17, 2021 Udostępnij Listopad 17, 2021 (edytowany) A pojęcie drgań styków i "debounce" coś Tobie mówi? https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce EDIT: Dodatkowo musisz zwiększać zmienną po puszczeniu przycisku. Edytowano Listopad 17, 2021 przez pmochocki
farmaceuta Listopad 17, 2021 Udostępnij Listopad 17, 2021 if (digitalRead(Blue) == LOW) { while (digitalRead(Blue) == LOW) { delay(50); } b++; } Mozesz takie cos zastosowac...to takie najprostrze ale z blokujacym delay'em, (dopoki guzik trzymasz wcisniety to siedzisz w while)
BananWszyscy Listopad 18, 2021 Udostępnij Listopad 18, 2021 (edytowany) void obsluga_przyciskow(blabla) { static uint8_t opoznienie_przycisku; if (!digitalRead(przycisk) && !opoznienie_przycisku) { opoznienie_przycisku = 1; //tutaj co ma sie zrobic jednorazowo } else if (opoznienie_przycisku && digitalRead(przycisk)) opoznienie_przycisku++; } Jeżeli wciśnięty guzik -> stan niski. Taką funkcję do x przycisków możesz na chama w pętli głównej odpalić Edytowano Listopad 18, 2021 przez BananWszyscy
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »