Tworzenie gry za pomocą Arduino UNO i Top 10 × 2 LCD

Tworzenie gry za pomocą Arduino UNO i Top 10 × 2 LCD
Tworzenie różnych projektów i aby dowiedzieć się o obwodach platforma Arduino jest realną opcją dla początkujących, ponieważ zapewnia szeroką gamę opcji sprzętu i oprogramowania dla użytkowników. W przypadku oprogramowania głównie Arduino IDE jest używane, a do sprzętu używane jest głównie Arduino Uno. Korzystając z Arduino Uno i Arduino IDE Stworzyliśmy grę o nazwie Ardi Pac, w której stworzyliśmy postać, która unika jej wroga po naciśnięciu przycisku.

Jak stworzyć grę na Arduino Uno za pomocą LCD

Aby utworzyć grę, musimy utworzyć obwód, który zaimplementujemy na sprzęcie, a wcześniej musimy krótko zaliczyć niezbędne komponenty wymagane do zaprojektowania obwodu:

  • Tablica chleba
  • 1 16x2liquid Crystal Expt
  • Łączenie przewodów
  • 1 przycisk
  • 1 potencjometr
  • Arduino Uno

Poniższy rysunek pokazuje schemat obwodu zaprojektowanego do tworzenia gry za pomocą Arduino Uno:

Jak złożyć sprzęt do tworzenia gry za pomocą Arduino Uno

Aby ułatwić montaż sprzętu, podaliśmy poniższy obraz pokazujący, w jaki sposób możemy podłączyć komponenty wymagane do utworzenia gry Arduino:

Podłączyliśmy piny danych LCD do Arduino Uno za pomocą pinu 5,4,3,2 z fioletowymi przewodami i do regulacji jasności LCD podłączyliśmy potencjometr. Żółty drut łączy wyjście potencjometru z LCD. Aby zagrać w grę, użyliśmy przycisku, który zmieni pozycję znaku, podłączając swój jeden szpilka za pomocą Cyan Color Wire do przypinania 8 Arduino i uziemienia drugiego szpilki.

Do podłączania LCD, potencjometru i przycisku z zasilaniem wzięliśmy zasilanie z Arduino Uno za pomocą pinów Breadboard.

Jak napisać kod Arduino do tworzenia gry za pomocą Arduino Uno

Podaliśmy poniżej kodu Arduino do tworzenia gry unikania przeszkód za pomocą Arduino Uno:

#include / * dekarling lcd biblioteka * /
Liquidcrystal LCD (12, 11, 5, 4, 3, 2);/* przypisanie szpilki Arduino do LCD*/
przycisk int = 8;/*Przypisanie pinu Arduino do przycisku*/
/*Zmienne do przechowywania czasu, aby przenieść wroga i charakter*/
niepodpisany długi a;
niepodpisany długi b;
niepodpisany długi c;
niepodpisany długi d;
int opóźnienie = 500; / * definiowanie prędkości wroga */
Int zmniejszał się = 20; / * za zmniejszenie prędkości wroga */
int State2 = 0;/ * zmienna, która będzie przechowywać wartość przycisku po naciśnięciu na początku gry */
Int State1 = 0;/* Zmienna do przechowywania wartości przycisku naciśniętej, aby przesunąć miejsce znaku*/
BOOL PAC = 0;/* Zmienna, która uratuje wartość dla charakteru w celu wykrycia zderzenia z wrogiem*/
Int i;/* zmienna, która służy do poruszania wroga na LCD*/
int punkty = 0;/ * zmienna do przechowywania punktów osiągnięta gracza */
/*deklarowanie plików binarnych dla wroga i charakteru*/
bajtowy wrog [8] =
B00000,
B00100,
B01110,
B11111,
B10101,
B11111,
B11111,
B10101
;
BYTE PAC1 [8] =
B00000,
B01110,
B11011,
B11110,
B11100,
B11110,
B11111,
B01110
;
BYTE PAC2 [8] =
B00000,
B01110,
B11011,
B11111,
B11111,
B11111,
B11111,
B01110
;
void setup ()
pinmode (przycisk, input_pullup); // Przypisz tryb pracy do przycisku */
LCD.Rozpocznij (16, 2);/* deklarowanie rozmiaru wyświetlacza*/
LCD.CreateChar (7, wróg); // deklarowanie wroga jako postaci
LCD.CreateChar (6, Pac1); // deklarowanie PAC1 jako postacią
LCD.CreateChar (5, Pac2); // deklarowanie PAC2 jako postacią
i = 15;/ * definiowanie liczby kolumn dla wroga */
/ * oszczędzanie czasu w zmiennych czasowych zadeklarowanych powyżej */
a = millis ();
B = Millis ();
c = Millis ();
d = Millis ();
State1 = DigitalRead (przycisk);/ * Czytanie stanu przycisku naciśniętego po raz pierwszy */
while (state1 == High) / * Jeśli przycisk nie jest naciśnięty */
/ * Wyświetlanie gry i animacji postaci */
LCD.setCursor (3, 0);
LCD.print („Ardi-Pac”);
LCD.setCursor (3, 1);
LCD.print („naciśnij start”);
LCD.setCursor (13, 0);
LCD.Napisz (6);
opóźnienie (300);
LCD.setCursor (13, 0);
LCD.Napisz (5);
opóźnienie (300);
State1 = DigitalRead (przycisk);/* Ponownie odczytaj stan przycisku*/
if (state1 == Low) / * Jeśli zostanie naciśnięty, przejdź do sekcji pętli */
przerwa;


opóźnienie (500);

void Loop ()
State2 = cyfrowe (przycisk);/ * Sprawdź stan przycisku */
if ((millis ()-a)> = opóźnienie) /* Rozpocznij ruch wroga na LCD* /
a = millis ();
LCD.jasne();
LCD.setCursor (i, 1);
LCD.Napisz (7);
i = i-1;
if (i == -1) /* warunek, aby przenieść wroga na LCD, zaczynając od 15 i do zera*/
i = 15;

LCD.setCursor (6, 0);
LCD.druk („punkty:”);
LCD.wydrukuj (punkty);/ * Wyświetlanie punktów osiągniętych przez gracza */

if ((millis ()-b)> = 50)
B = Millis ();
if (state2 == Low && pac == false) / * wyświetlanie znaku na LCD, czytając stan przycisku * /
LCD.SetCursor (1, 0);/* Umieszczenie znaku w pierwszej kolumnie i pierwszym wierszu, gdy przycisk jest naciśnięty*/
LCD.Napisz (6);
pac = true; / * aktualizacja, że ​​brak kolizji z wrogiem */
B = Millis ();/ * Oszczędzanie czasu */

w przeciwnym razie if (pac == true) /*, jeśli nadal nie ma zderzenia, umieść ją w tym samym miejscu* /
LCD.setCursor (1, 0);
LCD.Napisz (6);

w przeciwnym razie (pac == false) /* przenieś znak do pierwszej kolumny drugiego rzędu na LCD*/
LCD.setCursor (1, 0);
LCD.druk („”);
LCD.setCursor (1, 1);
LCD.Napisz (6);


if ((millis ()-c)> = 1500 && pac == true) / * Jeśli przycisk zostanie naciśnięty ponownie, przenieś znak do pierwszego wiersza */
c = Millis ();
LCD.setCursor (1, 1);
LCD.Napisz (6);
LCD.setCursor (1, 0);
LCD.druk („”);
pac = false;

if (((millis ()-d)> = 1000) && (i == 1)) /* jeśli wróg bierze swój lcd w pierwszej rundzie bez żadnej kolizji* /
d = Millis ();
if (pac == true)
Punkty = punkty+1;/* kolizja jest wykrywana, a następnie dodaj jeden w punktach*/
if (punkty%5 == 0)
Opóźnienie = opóźnienie de-dereaselay;/* Zmniejsz prędkość wroga*/
if (opóźnienie <= 200) //changed the speed of enemy to 200
ZmniejszaneLay = 0; / * Nie zwiększaj prędkości wroga */



w przeciwnym razie / * Gdy nastąpi kolizja, wyczyść grę LCD i wyświetlaj grę na */
LCD.jasne();
LCD.setCursor (0, 0);
LCD.wydrukować („gra nad!");
LCD.setCursor (0, 1);
LCD.drukuj („start ponownie”);
punkty = 0;
i = 15;
Opóźnienie = 500; // przełącza się z powrotem do podstawowej prędkości
State2 = DigitalRead (przycisk);
while (state2 == High) /* czytaj dalej stan przycisku, gdy stan jest wysoki*/
State2 = DigitalRead (przycisk); /*Jeśli przycisk naciśnięty, rozpocznij ponownie grę*/

opóźnienie (500);


Stworzyliśmy prostą grę, która pozwala uniknąć zderzeń z przychodzącymi przedmiotami i za to najpierw ogłosiliśmy binarie dla wroga i postaci. Ponadto zdefiniowaliśmy bibliotekę wyświetlacza używanego z Arduino Uno.

Aby przesunąć wroga na LCD, użyliśmy pętli, która zmniejszy jedną wartość na każdej iteracji. Obok przesunięcia położenia znaku użyliśmy przycisku w taki sposób, aby po naciśnięciu przycisku postać przesuwa się do pierwszego wiersza LCD.

Aby przywrócić postać do jej pierwotnego miejsca, użyliśmy funkcji Mills (). Zaoszczędziliśmy czas, kiedy postać się podniosła, a następnie zdefiniowaliśmy czas, po czym postać wróci na swoją pozycję.

Kiedy miejsce wroga i postać dostanie to samo, gra się zatrzyma i zacznie się od nowa po naciśnięciu przycisku.

Jak tworzyć sprzęt do tworzenia gry za pomocą Arduino i LCD

Poniższy obraz to implementacja sprzętu zgodnie z opisanym powyżej zespołem sprzętowym:

Powyższe zdjęcie to główne menu gry, naciśnięcie przycisku uruchomi się w grę:

Naciśnięcie przycisku sprawi, że postać skoczy, aby uniknąć wrogów, a po zderzeniu z wrogiem wyświetli następujące menu:

Aby zilustrować, jak gra będzie działać, podaliśmy animowany GIF poniżej:

Wniosek

Platforma Arduino może być wykorzystana do tworzenia różnych projektów, które mogą być bardzo pomocne dla początkujących w obwodach. Stworzyliśmy grę, w której gracz musi unikać przychodzących obiektów. Aby przenieść gracza, użyliśmy przycisku, a także obliczyliśmy punkty równe liczbie unikniętych przeszkód. Dostarliśmy również kod Arduino do utworzenia gry, a także biorąc pod uwagę demonstrację sprzętu.