Gra, którą zbudujemy, przeznaczona jest dla dwóch osób. Jej zasady są dość proste: w momencie zmiany koloru diody z czerwonego na niebieski gracze muszą jak najszybciej wcisnąć przycisk. Ten, kto zrobi to pierwszy, wygrywa starcie, a czas reakcji na wciśnięcie przycisku wyświetli się w monitorze portu szeregowego.
Realizacja projektu
Pracę nad projektem rozpoczniemy od budowy układu na płytce stykowej. W tym celu musimy przygotować kilka niezbędnych elementów.
Co będzie nam potrzebne:
2x rezystor o wartości 1kΩomega
dioda dwukolorowa o wspólnej katodziewspólna katodawspólnej katodzie (jeśli takiej nie mamy, możemy wykorzystać dwie zwykłe diody i złączyć je wspólnie katodami)
2x przycisk tact switch 12 x 12 mm (jeśli takich nie mamy, możemy wykorzystać 6 x 6 mm)
2 nakładki na przyciski w różnych kolorach (dla przycisków 12 x 12 mm)
Arduino Uno
kabel USB typu A‑B do podłączenia do komputera.
RAU2ZjSk7A2Bj
Zdjęcie przedstawia arduino uno leżące obok płytki stykowej, 2 przycisków, led z 3 nóżkami, wielu kabli zwiniętych w paczki i 2 zaślepek na przyciski.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Schemat ideowy układu
R19LYJSJ8421N
Ilustracja przedstawia schemat elektryczny układu. Do Arduino uno podłączone są dwa przyciski do portów D5 i D6, odpowiednio Gracz 1 i Gracz 2. Do portów D8 i D9 podłączone są 2 rezystory, które następnie prowadzą do 2 katod diody z 3 nóżkami. Anody każdego z przycisków jak i diody podłączone są do uziemienia. Wszystkie 3 porty GND Arduino uno podłączone są do wspólnego uziemienia. Wszystkie porty znajdują się w górnej części po prawej strony płytki.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Konstruowanie jakiegokolwiek obwodu elektrycznego najlepiej przeprowadzać na podstawie schematu ideowegoschemat ideowy układuschematu ideowego - taka graficzna forma układu bardzo ułatwia pracę. Na przedstawionym powyżej schemacie możemy dokładnie zobaczyć, jak zbudowany jest nasz układ. Przede wszystkim należy zwrócić uwagę na połączenia poszczególnych elementów (przyciski i dioda dwukolorowa) z płytką Arduino Uno.
Schemat działania
Na początku wpinamy w płytkę dwa przyciski.
RojzHhqAgcoBT
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Następnie dodajemy diodę LED. Środkowa nóżka diody to wspólna katoda.
R10vVc9gLZNxA
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, dodano diodę o 3 nóżkach pomiędzy przyciski. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Kolejnym krokiem jest dołączenie do anod diody dwóch rezystorów.
R1FPfNd1APHBI
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, po środku znajduje się dioda o 3 nóżkach, do której przymocowano dwa rezystory do zewnętrznych nóżek diody. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h. Pierwszy rezystor wpięty jest w pin 28d oraz 28g, drugi rezystor wpięty jest w pin 32d oraz 32g.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Teraz wpinamy kabelki połączeniowe i łączymy masy przycisków oraz diody LED.
RVzbKChJIykuz
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, po środku znajduje się dioda o 3 nóżkach, do której przymocowano dwa rezystory do zewnętrznych nóżek diody. Z przycisków jak i diody wychodzą kable doprowadzające do uziemienia. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h. Pierwszy rezystor wpięty jest w pin 28d oraz 28g, drugi rezystor wpięty jest w pin 32d oraz 32g. Kable wpięte są w piny 6f, 30f oraz 59f. Drugi koniec trzech kabli wpięty jest do minusowych pinów na płytce.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Następnie podłączamy masę (GND) do Arduino Uno.
R1SeQ0Q3Q6meB
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, po środku znajduje się dioda o 3 nóżkach, do której przymocowano dwa rezystory do zewnętrznych nóżek diody. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h. Pierwszy rezystor wpięty jest w pin 28d oraz 28g, drugi rezystor wpięty jest w pin 32d oraz 32g. Kable wpięte są w piny 6f, 30f oraz 59f. Drugi koniec trzech kabli wpięty jest do minusowych pinów na płytce. Z Arduino z portu GND wychodzi kabel do płytki w minusowy pin.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Teraz łączymy przyciski z Arduino Uno. Przycisk Gracza 1 podpinamy do pinu 5 Arduino Uno, a przycisk Gracza 2 - do pinu 6.
R12Q5IXD6JNij
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, po środku znajduje się dioda o 3 nóżkach, do której przymocowano dwa rezystory do zewnętrznych nóżek diody. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h. Pierwszy rezystor wpięty jest w pin 28d oraz 28g, drugi rezystor wpięty jest w pin 32d oraz 32g. Kable wpięte są w piny 6f, 30f oraz 59f. Drugi koniec trzech kabli wpięty jest do minusowych pinów na płytce. Z Arduino z portu GND wychodzi kabel do płytki w minusowy pin. Z arduino z portów 6 (przewód żółty) i 5 (przewód zielony) wychodzą przewody prowadzące do pinów na płytce stykowej 8f (zielony) oraz 56f (żółty).
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Zostało nam jeszcze podłączenie anod diod z Arduino Uno. Kolor czerwony diody podpinamy do pinu8, a kolor niebieski do pinu9 w Arduino Uno.
R1OpaX0lAmdpn
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, po środku znajduje się dioda o 3 nóżkach, do której przymocowano dwa rezystory do zewnętrznych nóżek diody. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h. Pierwszy rezystor wpięty jest w pin 28d oraz 28g, drugi rezystor wpięty jest w pin 32d oraz 32g. Kable wpięte są w piny 6f, 30f oraz 59f. Drugi koniec trzech kabli wpięty jest do minusowych pinów na płytce. Z Arduino z portu GND wychodzi kabel do płytki w minusowy pin. Z arduino z portów 6 (przewód żółty) i 5 (przewód zielony) wychodzą przewody prowadzące do pinów na płytce stykowej 8f (zielony) oraz 56f (żółty). Z Arduino z portów 8 (przewód czerwony) i 9 (przewód bordowy), wychodzą przewody do płytki stykowej do pinów 28c (czerwony) i 32c ( bordowy).
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Na koniec zakładamy nakładki na przyciski.
RIFXI4ZRRqF4S
Zdjęcie przedstawia płytkę stykową z dwoma przyciskami zamontowanymi po przeciwnych stronach, po środku znajduje się dioda o 3 nóżkach, do której przymocowano dwa rezystory do zewnętrznych nóżek diody. Pierwszy przycisk jest wpięty w pin 6f oraz 8f, drugi przycisk jest wpięty w pin 57f oraz 59f. Dioda jest wpięta w piny 28h, 30h oraz 32h. Pierwszy rezystor wpięty jest w pin 28d oraz 28g, drugi rezystor wpięty jest w pin 32d oraz 32g. Kable wpięte są w piny 6f, 30f oraz 59f. Drugi koniec trzech kabli wpięty jest do minusowych pinów na płytce. Z Arduino z portu GND wychodzi kabel do płytki w minusowy pin. Z arduino z portów 6 (przewód żółty) i 5 (przewód zielony) wychodzą przewody prowadzące do pinów na płytce stykowej 8f (zielony) oraz 56f (żółty). Z Arduino z portów 8 (przewód czerwony) i 9 (przewód bordowy), wychodzą przewody do płytki stykowej do pinów 28c (czerwony) i 32c ( bordowy). Na przyciski nałożone zostały nakładki powiększające ich rozmiar.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Pisanie kodu
Gdy nasz układ jest gotowy, możemy przejść do napisania programu. By prawidłowo napisać kod na potrzeby naszej gry, na początku musimy zdefiniować nazwy dla przycisków graczy i diody LED.
Linia 1. kratka define LedRed 8.
Linia 2. kratka define LedBlue 9.
Linia 3. kratka define Player1 5.
Linia 4. kratka define Player2 6.
double - przechowuje liczby zmiennoprzecinkowe z dokładnością do 15 miejsc po przecinku, zajmuje 8 bajtów,
long - przechowuje liczby całkowite od -2 miliardów do 2 miliardów, zajmuje 4 bajty pamięci.
Linia 1. double CzasDiody średnik.
Linia 2. long CzasReakcji średnik.
double CzasDiody;
long CzasReakcji;
W ciele funkcji setup() inicjalizujemy port szeregowy oraz ustawiamy tryb, w jakim mają pracować poszczególne piny. W monitorze portu szeregowego będziemy mogli zobaczyć wyniki gry.
Linia 1. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik.
Linia 3. pinMode otwórz nawias okrągły Player1 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 4. pinMode otwórz nawias okrągły Player2 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 5. pinMode otwórz nawias okrągły LedRed przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 6. pinMode otwórz nawias okrągły LedBlue przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 7. zamknij nawias klamrowy.
W funkcji loop() umieszczamy program, w którym m.in.: przełączamy kolory z czerwonego na niebieski, liczymy czas reakcji na wciśnięcie przycisków przez graczy, jak również wyświetlamy wynik w monitorze portu szeregowego.
Za losowy czas świecenia diody na niebiesko odpowiada fragment:
Linia 1. CzasDiody znak równości random otwórz nawias okrągły 500 przecinek 5000 zamknij nawias okrągły średnik.
CzasDiody = random (500, 5000);
Ważne!
Czas w Arduino podawany jest zawsze w ms (milisekundach).
Aby milisekundy przeliczyć na sekundy, należy podzielić ms przez 1000.
W tym czasie w monitorze portu szeregowego wyświetla nam się napis: Przygotujcie się. Przez cały czas dioda świeci się na czerwono.
RHqUVfWGF9ORb
Zdjęcie ekranu konsoli arduino z tytułem "COM9" z wydrukowanym napisem "Przygotujcie się!".
Linia 1. CzasDiody znak równości random otwórz nawias okrągły 500 przecinek 5000 zamknij nawias okrągły średnik.
Linia 2. Serial kropka println otwórz nawias okrągły cudzysłów Przygotujcie się wykrzyknik cudzysłów zamknij nawias okrągły średnik.
Linia 3. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły LedRed przecinek HIGH zamknij nawias okrągły średnik.
Linia 5. delay otwórz nawias okrągły CzasDiody zamknij nawias okrągły średnik.
Po osiągnięciu opóźnienia delay równego CzasDiody dioda zmienia kolor z czerwonego na niebieski. Od tego momentu naliczany jest czas reakcji na wciśnięcie przycisku przez Gracza 1 lub Gracza 2.
RwXDDVoTk6EEb
Zdjęcie ekranu konsoli arduino z tytułem "COM9" z wydrukowanym napisem "Przygotujcie się!". Pod tym napisem w nowej linii widoczny jest napis "START!".
Linia 1. Serial kropka println otwórz nawias okrągły cudzysłów START wykrzyknik cudzysłów zamknij nawias okrągły średnik.
Linia 2. digitalWrite otwórz nawias okrągły LedBlue przecinek HIGH zamknij nawias okrągły średnik.
Linia 3. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 4. CzasReakcji znak równości millis otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 6. while otwórz nawias okrągły digitalRead otwórz nawias okrągły Player1 zamknij nawias okrągły znak równości znak równości HIGH ampersant ampersant digitalRead otwórz nawias okrągły Player2 zamknij nawias okrągły znak równości znak równości HIGH zamknij nawias okrągły średnik.
Funkcja digitalRead (Player1) lub digitalRead (Player2) zwraca wartość LOW (stan niski) w momencie wciśnięcia przycisku. Jest to moment zwarcia pinu Arduino do masy (GND).
Gdy przycisk jest w stanie spoczynku (jest to stan, gdy przycisk nie jest wciśnięty), zwraca wartość HIGH (stan wysoki).
Funkcja milis() nie przyjmuje żadnego argumentu. Umożliwia odczytanie czasu, jaki upłynął od uruchomienia programu. Funkcja ta zwraca wartość typu long i umożliwia odczytanie wartości do 50 dni od uruchomienia programu. Po tym czasie odliczanie zacznie się od nowa.
W naszym kodzie funkcja milis() służy do zliczania czasu, jaki upłynął od zmiany koloru diody na przeciwny do momentu wciśnięcia przycisku przez któregoś z graczy.
Pętla while() została zastosowana w celu „zatrzymania” programu w momencie wykrycia wciśnięcia przycisku przez któregoś z graczy.
Po wciśnięciu przycisku przez gracza następuje „uwolnienie” dalszego programu - dzięki temu w monitorze pojawi się wynik informujący o tym, który z graczy wcisnął przycisk jako pierwszy oraz jaki osiągnął czas.
R1dXQBcYGLP2C
Zdjęcie ekranu konsoli arduino z tytułem "COM9" z wydrukowanym napisem "Przygotujcie się!" w pierwszej linii, w nowej linii napis "START!", a w ostatniej "Wygrał gracz 1! Z czasem: 5.56 s".
RZJfE0Ip96TDg
Zdjęcie ekranu konsoli arduino z tytułem "COM9" z wydrukowanym napisem "Przygotujcie się!" w pierwszej linii, w nowej linii napis "START!", a w następnej "Wygrał gracz 2! Z czasem: 1.24 s", a w ostatniej linia narysowana z minusów.
Linia 1. if otwórz nawias okrągły digitalRead otwórz nawias okrągły Player1 zamknij nawias okrągły znak równości znak równości LOW zamknij nawias okrągły otwórz nawias klamrowy.
Linia 2. Serial kropka print otwórz nawias okrągły cudzysłów Wygrał gracz 1 wykrzyknik Z czasem dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 3. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus CzasReakcji zamknij nawias okrągły prawy ukośnik 1000 kropka 0 zamknij nawias okrągły średnik.
Linia 4. Serial kropka println otwórz nawias okrągły cudzysłów s cudzysłów zamknij nawias okrągły średnik.
Linia 5. zamknij nawias klamrowy else if otwórz nawias okrągły digitalRead otwórz nawias okrągły Player2 zamknij nawias okrągły znak równości znak równości LOW zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. Serial kropka print otwórz nawias okrągły cudzysłów Wygrał gracz 2 wykrzyknik Z czasem dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 7. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus CzasReakcji zamknij nawias okrągły prawy ukośnik 1000 kropka 0 zamknij nawias okrągły średnik.
Linia 8. Serial kropka println otwórz nawias okrągły cudzysłów s cudzysłów zamknij nawias okrągły średnik.
Linia 9. zamknij nawias klamrowy.
Linia 11. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
if (digitalRead (Player1) == LOW) {
Serial.print ("Wygrał gracz 1! Z czasem: ");
Serial.print ((millis() - CzasReakcji) / 1000.0);
Serial.println (" s");
} else if (digitalRead (Player2) == LOW) {
Serial.print ("Wygrał gracz 2! Z czasem: ");
Serial.print ((millis() - CzasReakcji) / 1000.0);
Serial.println (" s");
}
delay(2000);
Aby wynik podawany był w sekundach (s), musimy go podzielić przez 1000.
Ważne!
1 sekunda to 1000 ms.
Po wyświetleniu wyników czekamy dwie sekundy, po czym przechodzimy do wykonywania kolejnych linijek kodu:
Linia 1. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik.
Linia 2. Serial kropka println otwórz nawias okrągły cudzysłów Następna gra za dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 3. Serial kropka println otwórz nawias okrągły cudzysłów 5 sekund cudzysłów zamknij nawias okrągły średnik.
Linia 4. digitalWrite otwórz nawias okrągły LedBlue przecinek HIGH zamknij nawias okrągły średnik.
Linia 5. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 6. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 7. Serial kropka println otwórz nawias okrągły cudzysłów 4 sekundy cudzysłów zamknij nawias okrągły średnik.
Linia 8. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 9. digitalWrite otwórz nawias okrągły LedRed przecinek HIGH zamknij nawias okrągły średnik.
Linia 10. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 11. Serial kropka println otwórz nawias okrągły cudzysłów 3 sekundy cudzysłów zamknij nawias okrągły średnik.
Linia 12. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 13. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 14. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 15. Serial kropka println otwórz nawias okrągły cudzysłów 2 sekundy cudzysłów zamknij nawias okrągły średnik.
Linia 16. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 17. digitalWrite otwórz nawias okrągły LedRed przecinek HIGH zamknij nawias okrągły średnik.
Linia 18. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 19. Serial kropka println otwórz nawias okrągły cudzysłów 1 sekundę cudzysłów zamknij nawias okrągły średnik.
Linia 20. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 21. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 22. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 23. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik.
Linia 24. Serial kropka println otwórz nawias okrągły cudzysłów cudzysłów zamknij nawias okrągły średnik.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Film przedstawia działanie programu w konsoli, wyświetlane są kolejne linie odpowiedzi w trakcie działania programu.
Kod gry
Całość kodu wygląda następująco:
Linia 1. kratka define LedRed 8.
Linia 2. kratka define LedBlue 9.
Linia 3. kratka define Player1 5.
Linia 4. kratka define Player2 6.
Linia 6. double CzasDiody średnik.
Linia 7. long CzasReakcji średnik.
Linia 9. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik.
Linia 11. pinMode otwórz nawias okrągły Player1 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 12. pinMode otwórz nawias okrągły Player2 przecinek INPUT podkreślnik PULLUP zamknij nawias okrągły średnik.
Linia 13. pinMode otwórz nawias okrągły LedRed przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 14. pinMode otwórz nawias okrągły LedBlue przecinek OUTPUT zamknij nawias okrągły średnik.
Linia 15. zamknij nawias klamrowy.
Linia 17. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. CzasDiody znak równości random otwórz nawias okrągły 500 przecinek 5000 zamknij nawias okrągły średnik.
Linia 19. Serial kropka println otwórz nawias okrągły cudzysłów Przygotujcie się wykrzyknik cudzysłów zamknij nawias okrągły średnik.
Linia 20. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 21. digitalWrite otwórz nawias okrągły LedRed przecinek HIGH zamknij nawias okrągły średnik.
Linia 22. delay otwórz nawias okrągły CzasDiody zamknij nawias okrągły średnik.
Linia 24. Serial kropka println otwórz nawias okrągły cudzysłów START wykrzyknik cudzysłów zamknij nawias okrągły średnik.
Linia 25. digitalWrite otwórz nawias okrągły LedBlue przecinek HIGH zamknij nawias okrągły średnik.
Linia 26. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 27. CzasReakcji znak równości millis otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 29. while otwórz nawias okrągły digitalRead otwórz nawias okrągły Player1 zamknij nawias okrągły znak równości znak równości HIGH ampersant ampersant digitalRead otwórz nawias okrągły Player2 zamknij nawias okrągły znak równości znak równości HIGH zamknij nawias okrągły średnik.
Linia 31. if otwórz nawias okrągły digitalRead otwórz nawias okrągły Player1 zamknij nawias okrągły znak równości znak równości LOW zamknij nawias okrągły otwórz nawias klamrowy.
Linia 32. Serial kropka print otwórz nawias okrągły cudzysłów Wygrał gracz 1 wykrzyknik Z czasem dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 33. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus CzasReakcji zamknij nawias okrągły prawy ukośnik 1000 kropka 0 zamknij nawias okrągły średnik.
Linia 34. Serial kropka println otwórz nawias okrągły cudzysłów s cudzysłów zamknij nawias okrągły średnik.
Linia 35. zamknij nawias klamrowy else if otwórz nawias okrągły digitalRead otwórz nawias okrągły Player2 zamknij nawias okrągły znak równości znak równości LOW zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. Serial kropka print otwórz nawias okrągły cudzysłów Wygrał gracz 2 wykrzyknik Z czasem dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 37. Serial kropka print otwórz nawias okrągły otwórz nawias okrągły millis otwórz nawias okrągły zamknij nawias okrągły minus CzasReakcji zamknij nawias okrągły prawy ukośnik 1000 kropka 0 zamknij nawias okrągły średnik.
Linia 38. Serial kropka println otwórz nawias okrągły cudzysłów s cudzysłów zamknij nawias okrągły średnik.
Linia 39. zamknij nawias klamrowy.
Linia 41. delay otwórz nawias okrągły 2000 zamknij nawias okrągły średnik.
Linia 43. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik.
Linia 44. Serial kropka println otwórz nawias okrągły cudzysłów Następna gra za dwukropek cudzysłów zamknij nawias okrągły średnik.
Linia 45. Serial kropka println otwórz nawias okrągły cudzysłów 5 sekund cudzysłów zamknij nawias okrągły średnik.
Linia 46. digitalWrite otwórz nawias okrągły LedBlue przecinek HIGH zamknij nawias okrągły średnik.
Linia 47. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 48. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 49. Serial kropka println otwórz nawias okrągły cudzysłów 4 sekundy cudzysłów zamknij nawias okrągły średnik.
Linia 50. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 51. digitalWrite otwórz nawias okrągły LedRed przecinek HIGH zamknij nawias okrągły średnik.
Linia 52. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 53. Serial kropka println otwórz nawias okrągły cudzysłów 3 sekundy cudzysłów zamknij nawias okrągły średnik.
Linia 54. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 55. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 56. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 57. Serial kropka println otwórz nawias okrągły cudzysłów 2 sekundy cudzysłów zamknij nawias okrągły średnik.
Linia 58. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 59. digitalWrite otwórz nawias okrągły LedRed przecinek HIGH zamknij nawias okrągły średnik.
Linia 60. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 61. Serial kropka println otwórz nawias okrągły cudzysłów 1 sekundę cudzysłów zamknij nawias okrągły średnik.
Linia 62. digitalWrite otwórz nawias okrągły LedBlue przecinek LOW zamknij nawias okrągły średnik.
Linia 63. digitalWrite otwórz nawias okrągły LedRed przecinek LOW zamknij nawias okrągły średnik.
Linia 64. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.
Linia 65. Serial kropka println otwórz nawias okrągły cudzysłów minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus minus cudzysłów zamknij nawias okrągły średnik.
Linia 66. Serial kropka println otwórz nawias okrągły cudzysłów cudzysłów zamknij nawias okrągły średnik.
Linia 67. zamknij nawias klamrowy.
dodając obsługę wyświetlacza LCD, dzięki czemu gra stanie się bardziej mobilna;
umożliwiając obsługę większej liczby graczy;
dodając diodę informująca o tym, który gracz wygrał starcie (o ile dostępne będą piny Arduino);
montując układ na własnej płytce PCB zamiast na płytce stykowej.
Tinkercad
Zróbmy symulację gry na refleks, za pomocą środowiska Tinkercad.
Dla zainteresowanych
Autodesk Tinkercad to darmowe środowisko, które umożliwia projektowanie konstrukcji 3D, tworzenie obwodów drukowanych oraz oprogramowania. Program ten wyróżnia się pod względem możliwości w zakresie symulacji kodu Arduino. Edycji programu można dokonywać przy pomocy wbudowanego edytora.
R8x0S9hY5m15c
Na zrzucie ekranu widoczne jest środowisko Tinkercad.
Dodaj do głównego okna symulatora płytkę stykową.
RvcOJkITE0EnL
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa.
Dodaj moduł Arduino Uno do okna symulacji.
R1P2qqqi9ABpd
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO.
Ponieważ system programu Tinkercad nie ma w swojej bibliotece dostępnych podzespołów diody dwukolorowej, zastosujmy dwie diody i złączymy je wspólnie katodą.
R1J30qpRoupOO
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami.
Do każdej anody dodaj rezystor o wartości 1 kΩomega.
R11gvVzimEGKt
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ.
Dodaj do płytki dwa przyciski.
R1eE3MWPB6dIl
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach.
Wolną nóżkę rezystora podpiętego do czerwonej diody połącz z pinem D8 Arduino.
R18sEg4seQTN0
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ Wolna nóżka rezystora diody czerwonej połączona jest z pinem D8 Arduino. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach.
Wolną nóżkę rezystora podpiętego do niebieskiej diody połącz z pinem D9 Arduino.
RlhvXARgaDnoj
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ Wolna nóżka rezystora diody czerwonej połączona jest z pinem D8 Arduino, a rezystor diody niebieskiej z pinem D9 Arduino. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach.
Do ujemnej szyny płytki podepnij po jednym pinie przycisku, katody diod LED oraz pin GND Arduino.
R1MDnleptTOuN
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ Wolna nóżka rezystora diody czerwonej połączona jest z pinem D8 Arduino, a rezystor diody niebieskiej z pinem D9 Arduino. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach. Do ujemnej szyny płytki podpięto po jednym pinie przycisku, katody diod LED oraz pin GND Arduino.
Przycisk gracza 1 podepnij pod pin D5 Arduino.
RJqpUb4oDU48Z
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ Wolna nóżka rezystora diody czerwonej połączona jest z pinem D8 Arduino, a rezystor diody niebieskiej z pinem D9 Arduino. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach. Do ujemnej szyny płytki podpięto po jednym pinie przycisku, katody diod LED oraz pin GND Arduino. Przycisk po lewej stronie płytki podpięto do pinu D5 Arduino.
Przycisk gracza 2 podepnij pod pin D6 Arduino.
RMNfLmZ0UaQ0p
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ Wolna nóżka rezystora diody czerwonej połączona jest z pinem D8 Arduino, a rezystor diody niebieskiej z pinem D9 Arduino. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach. Do ujemnej szyny płytki podpięto po jednym pinie przycisku, katody diod LED oraz pin GND Arduino. Przycisk po lewej stronie płytki podpięto do pinu D5 Arduino, a przycisk po prawej stronie do pinu D6 Arduino.
Przejdźmy teraz do pisania kodu. W tym celu klikamy na przycisk Kod, z listy rozwijanej wybieramy Tekst, potwierdzamy chęć zmiany widoku i czyścimy zawartość.
Przepisz kod, dopasuj widok okna, kliknij na belkę z napisem Konsola szeregowa i uruchom symulację.
Rwodhgjq42jzF
Na zrzucie ekranu widoczne jest środowisko Tinkercad. W oknie głównym znajduje się płytka stykowa oraz moduł arduino UNO. Na płytce stykowej znajduje się niebieska i czerwona dioda, które połączone są katodami. Natomiast anody diod połączone są z rezystorami 1 kΩ Wolna nóżka rezystora diody czerwonej połączona jest z pinem D8 Arduino, a rezystor diody niebieskiej z pinem D9 Arduino. Na płytce znajdują się także przyciski umiejscowione po przeciwległych stronach. Do ujemnej szyny płytki podpięto po jednym pinie przycisku, katody diod LED oraz pin GND Arduino. Przycisk po lewej stronie płytki podpięto do pinu D5 Arduino, a przycisk po prawej stronie do pinu D6 Arduino. W zakładce kod znajduje się fragment kodu: digitalWrite(LedBlue, High); digitalWrite(LedRed, LOW); delay (1000); Serial.println ("4 sekundy"); digitalWrite(LedBlue, LOW); digitalWrite(LedRed, HIGH); delay (1000); Serial.println ("3 sekundy"); digitalWrite(LedBlue, LOW); digitalWrite(LedRed, LOW); delay (1000); Serial.println ("2 sekundy"); digitalWrite(LedBlue, LOW); digitalWrite(LedRed, HIGH); delay (1000); Serial.println ("1 sekundy"); digitalWrite(LedBlue, LOW); digitalWrite(LedRed, LOW); delay (1000); Serial.println ("--------------------------------------------"); Serial.println (" "); }
Ważne!
Symulator ma problemy z polskimi znakami!
Film z działania programu.
R1DTxnMRYLq2E
Film przedstawiajacy działanie symulacji gry na refleks w programie Tinkercad.
Film przedstawiajacy działanie symulacji gry na refleks w programie Tinkercad.
Film przedstawiajacy działanie symulacji gry na refleks w programie Tinkercad.
Słownik
random
random
funkcja, która zwraca losową liczbę całkowitą; wywołując funkcję, podajemy dwa argumenty, dzięki którym określamy zakres, w jakim losowane są liczby; maksymalna liczba będzie zawsze o jeden mniejsza od górnego zakresu
schemat ideowy układu
schemat ideowy układu
inaczej schemat elektroniczny - graficzna forma przedstawiająca połączenie poszczególnych elementów układu; element każdego typu (np. rezystor, kondensator, tranzystor, dioda, przycisk) ma swój symbol graficzny, który jednoznacznie go identyfikuje
wspólna katoda
wspólna katoda
w celu zaoszczędzenia miejsca niektóre elementy elektroniczne łączone są we wspólnej obudowie, np. diody LED - dzięki połączonym katodom, do sterowania wszystkimi diodami wystarczą tylko trzy wyprowadzenia zamiast czterech
przewody połączeniowe męsko–męskie
przewody połączeniowe męsko–męskie
elastyczne przewody zakończone sztywnymi szpilkami; nadają się do łączenia pól na płytkach stykowych lub zestawach uruchomieniowych