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

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.