Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Zasady gry

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 1komega

  • 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)

  • płytka stykowa

  • przewody połączeniowe męsko‑męskieprzewody połączeniowe męsko–męskieprzewody połączeniowe męsko‑męskie

  • 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
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Schemat ideowy układu

R19LYJSJ8421N
Ź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
Ź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
Ź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
Ź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
Ź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
Ź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
Ź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 pinu 8, a kolor niebieski do pinu 9 w Arduino Uno.

R1OpaX0lAmdpn
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na koniec zakładamy nakładki na przyciski.

RIFXI4ZRRqF4S
Ź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.

Następnie deklarujemy zmienne:

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

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.
Ważne!

Czas w Arduino podawany jest zawsze w ms (milisekundach).

Aby milisekundy przeliczyć na sekundy, należy podzielić ms przez 1000.

500 m s   /   1000   =   0 , 5 s

W tym czasie w monitorze portu szeregowego wyświetla nam się napis: Przygotujcie się. Przez cały czas dioda świeci się na czerwono.

RHqUVfWGF9ORb
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
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
RZJfE0Ip96TDg
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.

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.

Ten fragment kodu odpowiada za wyświetlenie informacji o tym, kiedy rozpocznie się kolejne starcie graczy, oraz za miganie diody na czerwono.

R3sNFprA65GOT

Uruchom film, by zapoznać się z prezentacją działania gry:

R1dnEoHu6cAA9
Film przedstawiający działanie gry na refleks, podczas której miga dioda oraz dwie osoby mają wciskać przyciski.

W kolejnym filmie możemy przeanalizujemy informacje wyświetlane w monitorze portu szeregowego:

R1YvQWhO8n6Rb
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.
Ciekawostka

Grę można zmodyfikować na kilka sposobów, np.:

  • 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

Dodaj do głównego okna symulatora płytkę stykową.

RvcOJkITE0EnL

Dodaj moduł Arduino Uno do okna symulacji.

R1P2qqqi9ABpd

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

Do każdej anody dodaj rezystor o wartości 1 komega.

R11gvVzimEGKt

Dodaj do płytki dwa przyciski.

R1eE3MWPB6dIl

Wolną nóżkę rezystora podpiętego do czerwonej diody połącz z pinem D8 Arduino.

R18sEg4seQTN0

Wolną nóżkę rezystora podpiętego do niebieskiej diody połącz z pinem D9 Arduino.

RlhvXARgaDnoj

Do ujemnej szyny płytki podepnij po jednym pinie przycisku, katody diod LED oraz pin GND Arduino.

R1MDnleptTOuN

Przycisk gracza 1 podepnij pod pin D5 Arduino.

RJqpUb4oDU48Z

Przycisk gracza 2 podepnij pod pin D6 Arduino.

RMNfLmZ0UaQ0p

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

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