Skocz do zawartości

Zmiana wartości zmiennej, po wciśnięciu przycisku


Pomocna odpowiedź

#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.

Link to post
Share on other sites
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)

Link to post
Share on other sites
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 przez BananWszyscy
Link to post
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.