Skocz do zawartości

Problem z prostą grą Arduino


Budowlaniec

Pomocna odpowiedź

Witam wszystkich serdecznie,

niedawno zakupiłem podstawowy zestaw Arduino przeznaczony do nauki z kursu. Przebrnąłem migem przez 2 pierwsze lekcje i postanowiłem zrobić coś prostego na własną rekę (grę).

Polegać ma ona na tym, że 3 LEDy zmieniają się co 2s (czerowny, zółty, zielony) trzeba wcisnąć przycisk w momencie gdy pali się zielona dioda - wtedy zapala się niebieska dioda (na chwile) i szybkość zmiany LEDów rośnie dwukrotnie.

Problem w tym, że kod który póki co napisałem uwzględnia czas w którym można kliknąć przycisk  jako pojedynczy punkt (nie jako cały przedział w którym pali się dioda zielona). Pytanie czy jest jakieś proste rozwiązanie tego problemu. (np. w javascripcie mamy tzw. event listener)?

int level = 1;

void setup() {
  pinMode(1, OUTPUT); //niebieska
  pinMode(8, OUTPUT); //czerwona
  pinMode(7, OUTPUT); //zolta
  pinMode(6, OUTPUT); //zielona
  pinMode(0, INPUT_PULLUP); //przycisk
}

void loop() {
    digitalWrite(1, LOW);
    digitalWrite(8, HIGH);
    delay(2000/level);
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
    digitalWrite(1, LOW);
    delay(2000/level);
    if (digitalRead(0)==LOW) {
      digitalWrite(1, HIGH);
      level = level + 1;
    }
    digitalWrite(6, HIGH);
    digitalWrite(7, LOW);
    delay(2000/level);
}

 

 

Link do komentarza
Share on other sites

Twój "event listener" tutaj nazywa się "przerwanie", ale jest prostszy sposób w tym konkretnym przypadku. Po prostu zamiast czekać te 2 sekundy, a potem sprawdzać przycisk, zrób sobie pętlę, która czeka 0.01 sekundy i sprawdza przycisk i wykonuje się 200 razy.

Edytowano przez deshipu
Link do komentarza
Share on other sites

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ę »
×
×
  • 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.