Snake Game jest bardzo popularna od początku istnienia telefonów komórkowych. Początkowo był dostępny w czarno-białych telefonach komórkowych i wkrótce stał się bardzo sławny. Następnie wraz z rozwojem telefonów komórkowych ta gra również bardzo się zmieniła, a teraz dostępnych jest wiele graficznych i kolorowych wersji tej gry.
Gra Snake stała się również bardzo popularnym projektem DIY dla hobbystów i studentów elektroniki. Więc dzisiaj zamierzamy zademonstrować Arduino Snake Game, ze wszystkimi jej podstawowymi funkcjami, zachowując jednocześnie prostotę.
Zastosowane komponenty:
- Arduino UNO
- Matryca punktowa LED 8x8
- Rejestr przesuwny 74HC595
- Wyświetlacz LCD 16x2
- POT 1K
- Wciskać przyciski
- Przewody łączące
- Deska do chleba
- Zasilacz
Objaśnienie robocze:
To mało skomplikowana gra do zbudowania. Ale w tym samouczku ułatwiliśmy Ci to. Aby wykonać ten projekt, użyliśmy wyświetlacza 8x8 z czerwoną matrycą punktową do wyświetlania węża i jego kropki pożywienia, LCD do wyświetlania punktów lub wyniku, 5 przycisków do wydawania wskazówek i uruchamiania gry, a na koniec Arduino UNO do sterowania cały proces. Schemat pinów wyświetlacza LED Dot Matrix 8x8 z jego oryginalnym obrazem podano poniżej:
Kiedy włączamy obwód, najpierw wyświetlamy wiadomość powitalną, a następnie wskazówkę „Press Start To Play” na wyświetlaczu LCD. Następnie wyświetlacz LCD pokazuje wynik jako zero, a wyświetlacz z matrycą punktową pokazuje dwie kropki jako wąż i jedną kropkę jako pokarm.
Teraz użytkownik musi nacisnąć środkowy przycisk, aby rozpocząć grę, a wąż domyślnie zacznie poruszać się w górę. Następnie użytkownik musi nadać kierunek wężowi, naciskając „klawisze kierunkowe” wokół środkowego przycisku. Tutaj użyliśmy pięciu klawiszy (przycisków), a mianowicie lewego klawisza, prawego klawisza, klawisza w górę, klawisza w dół i klawisza Start. Za każdym razem, gdy wąż dotrze do kropki pożywienia lub zjada jedzenie, za każdym razem wynik zwiększa się o 5 punktów, a długość węża zwiększa się o jedną kropkę (LED), również prędkość węża staje się większa niż wcześniej. I kiedykolwiek wąż uderzyłby w jakąkolwiek ścianę lub sięgnąłby do końca matrycy LED, kończyło to grę („Koniec gry”). Następnie użytkownik musi ponownie rozpocząć grę, naciskając klawisz Start.
Objaśnienie obwodu:
Obwód tego Snake Game Project jest trochę skomplikowany. Tutaj połączyliśmy wyświetlacz z matrycą punktową za pomocą rejestru przesuwnego 74HC595. Tutaj używane są dwa rejestry przesuwne, jeden do napędzania kolumn, a drugi do napędzania rzędów. Piny sterujące obu rejestrów, rejestr przesuwny kolumny i rejestr przesuwny rzędu (SH, ST),są bezpośrednio podłączone do pinów Arduino odpowiednio 14 i 16. A pin DS rejestru przesuwnego kolumny i rejestru przesuwnego wiersza są bezpośrednio podłączone do pinów 15 i 17 Arduino. Przycisk startu do rozpoczęcia gry jest podłączony do pinu numer 3, lewy przycisk kierunku na pinie 4, prawy przycisk kierunku na pinie 6, przycisk kierunku w górę na pinie 2 i przycisk kierunku w dół na pinie 5. Wyświetlacz LCD jest również podłączony do naszego sprzętu pokaż wynik. Piny RS i EN są bezpośrednio połączone z pinami 13 i 12. Pin RW jest bezpośrednio uziemiony. Piny danych d4-d7 są podłączone do pinów 11, 10, 9, 8 Arduino. Reszta połączeń jest pokazana na schemacie połączeń.
Objaśnienie programowania:
Aby napisać ten kod gry w węża Arduino, najpierw dołączamy pliki nagłówkowe i definiujemy piny dla LCD. A następnie zdefiniuj piny dla przycisków kierunkowych i pin danych dla rejestrów przesuwnych.
#zawierać
Następnie inicjalizujemy wszystkie rzeczy, których używaliśmy w programie. W funkcji konfiguracji inicjalizujemy wyświetlacz LCD, nadając kierunek pinom wejściowym wyjściowym, podciągamy bity i wyświetlamy wiadomość powitalną na wyświetlaczu LCD.
void setup () {lcd.begin (16,2); pinMode (ds_col, OUTPUT); pinMode (sh_col, OUTPUT); pinMode (st_col, OUTPUT); pinMode (ds_row, OUTPUT); pinMode (start, INPUT);……………
A potem zaczynamy grę w funkcji pętli .
void show_snake (int temp) {for (int n = 0; n
Tutaj użyliśmy poniższej funkcji do odczytu kierunku wprowadzania z przycisku.
void read_button () {if (! digitalRead (left)) {move_r = 0; move_c! = - 1? move_c = -1: move_c = 1; while (! digitalRead (po lewej));……………
Sprawdź poniżej pełny kod C Code of Snake Game.