Gra na refleks - Podstawy Arduino

Gra na refleks - Arduino:
- Ogólne założenia
- Projektowanie układu
- Wymagane elementy
- Budowa kodu
- Działanie gry
Pora na wykorzystanie naszego Arduino do zbudowania czegoś przyjemnego, czegoś, czym zainteresujesz starsze i młodsze pokolenie, czegoś, co będzie proste do zbudowania oraz równe proste w zrozumieniu działania kodu. Będzie to, gra na refleks dla dwóch osób.
1. Ogólne założenia
Gra powinna być zbudowana z dwóch elementów, które będą testowały reakcję graczy oraz trzech sygnalizatorów: dwóch informujących kto pierwszy wcisnął przycisk, oraz jednego informującego graczy o tym, kiedy mogą rozpocząć rywalizację (START/STOP). Oto lista założeń działania gry:
- Sygnalizator świeci przez losowy czas
- Sygnalizator gaśnie aktywując elementy testujące refleks graczy
- Sprawdzenie refleksu graczy
- Zapalenie sygnalizatora gracza, który miał szybszy refleks
- Dioda sygnalizatora z punktu wyżej
- Powrót do punktu pierwszego
2. Projektowanie układu
Jako dwóch sygnalizatorów informujących o tym, który gracz popisał się szybszym refleksem, możemy użyć pary czerwonych diod LED natomiast jako sygnalizatora START/STOP użyjemy zielonej diody LED. Przyciski "tact switch" będą idealne do sprawdzenia, który gracz wygrał - wcisnął go jako pierwszy od momentu zgaśnięcia zielonej diody. Na podstawie tego możemy zrobić listę wymaganych elementów.
Całość podłączamy jak na zdjęciu poniżej:
-
Gra na refleks na płytce prototypowej
3. Wymagane elementy
Kliknij dany element, aby sprawdzić go w sklepie
- Arduino
- LED zielona (2x)
- LED czerwona
- Tact Switch (przycisk)
- Rezystor 1 kOhm (5x)
- Przewody
4. Budowa kodu
Opiszę tylko najważniejsze elementy kodu natomiast cały sketch jest dostępny pod tym linkiem
int ledG = 4; --> Informujesz Arduino, że podłączyłeś diodę zieloną do pinu 4
int stanR = LOW; --> stan diody czerwonej jest niski (dioda nie świeci się)
int stanG = HIGH; --> stan diody zielonej jest wysoki (dioda świeci się)
long rndm; --> deklarujesz zmienną rndm, która przechowuje czas świecenia się zielonej diody
pinMode(ledG, OUTPUT); --> pin, pod który podłączona jest dioda działa jako wyjście
pinMode(buttonL, INPUT); --> pin, pod który podłączony jest przycisk działa jako wejście
digitalWrite(ledG, stanG); --> przypisz diodzie stan ze zmiennej stanG
randomSeed(millis()); --> losowanie liczby
stanL = digitalRead(buttonL); --> przypisz zmiennej stanL (stanLeft) odczyt z lewego przycisku (buttonLeft)
if (i == 0)
{
digitalWrite(ledG, stanG);
rndm = random(2000,7000);
delay(rndm);
stanG = !stanG;
digitalWrite(ledG, stanG);
i++;
}
Jeżeli zmienna i jest równa 0 to wtedy:
- przypisz zielonej diodzie stan ze zmiennej stanG
- wylosuj liczbę z przedziału od 2000 do 7000
- odczekaj tyle czasu, ile wynosi wylosowana liczba (w milisekundach)
- zmień stanG na przeciwny
- przypisz zielonej diodzie stan ze zmiennej stanG
- dodaj 1 do zmiennej i