Å lage et spill ved hjelp av Arduino Uno og Top 10 × 2 LCD

Å lage et spill ved hjelp av Arduino Uno og Top 10 × 2 LCD
Å lage forskjellige prosjekter og for å lære om kretsløp er Arduino -plattformen det levedyktige alternativet for nybegynnere, da den gir et bredt spekter av maskinvare- og programvarealternativer til brukerne. For programvare brukes stort sett Arduino IDE og for maskinvare brukes stort sett Arduino Uno. Ved å bruke Arduino Uno og Arduino IDE har vi laget et spill som heter Ardi Pac der vi har laget en karakter som unngår fienden når vi trykker på en trykknapp.

Hvordan lage et spill på Arduino Uno ved hjelp av LCD

For å lage et spill, må vi lage en krets som vi vil implementere på maskinvaren, og før det må vi kortliste de nødvendige komponentene som kreves for å designe kretsen:

  • Brødbrett
  • 1 16x2Liquid Crystal Display
  • Koble til ledninger
  • 1 trykknapp
  • 1 potensiometer
  • Arduino Uno

Figuren nedenfor viser skjemaet for kretsen designet for å lage et spill ved hjelp av Arduino Uno:

Hvordan sette sammen maskinvaren for å lage spillet ved hjelp av Arduino Uno

For å gjøre montering av maskinvare enkelt har vi gitt bildet nedenfor som viser hvordan vi kan koble komponentene som kreves for å lage Arduino -spillet:

Vi har koblet LCD -datapinnene til Arduino UNO ved å bruke PIN -koden 5,4,3,2 med de lilla ledningene, og for lysstyrkejustering av LCD har vi koblet potensiometeret. Den gule ledningen kobler potensiometerutgangen med LCD. For å spille spillet har vi brukt trykknappen som vil endre plasseringen av tegnet ved å koble den ene pinnen ved hjelp.

For å koble til LCD, potensiometer og trykknappen med forsyning har vi tatt forsyningen fra Arduino Uno ved hjelp av brødplaterpinnene.

Hvordan skrive Arduino -kode for å lage et spill ved hjelp av Arduino Uno

Vi har gitt under Arduino -koden for å lage et hindringsspill ved å bruke Arduino Uno:

#include / * Decarling lcd biblioteket * /
LiquidCrystal LCD (12, 11, 5, 4, 3, 2);/* Tildel pinnene til Arduino til LCD*/
int -knapp = 8;/*tilordne Arduino -pinnen for trykknapp*/
/*variabler for lagring av tid for å flytte fienden og karakteren*/
usignert lang a;
usignert lang B;
usignert lang C;
usignert lang d;
int forsinkelse = 500; / * definere fiendens hastighet *//
int redusertLay = 20; / * for å redusere fiendens hastighet *//
int state2 = 0;/ * variabel som vil lagre verdien av trykknappen når du trykker på i starten av spillet */
int tilstand1 = 0;/* variabel for å lagre verdien på knappen som er trykket på for å flytte karakterstedet*/
bool pac = 0;/* variabel som vil spare verdien for karakter for å oppdage kollisjonen med fienden*/
int i;/* variabel som brukes til å flytte fienden på LCD*/
int poeng = 0;/ * variabel for å lagre poengene oppnådd spilleren */
/*erklærer binærene for fiende og karakter*/
byte fiende [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 (knapp, input_pullup); // Tildel arbeidsmodus til trykknappen */
LCD.Begynn (16, 2);/* Deklarere størrelsen på skjermen*/
LCD.Createchar (7, fiende); // erklære fienden som en karakter
LCD.CreateChar (6, Pac1); // erklære Pac1 som karakter
LCD.CreateChar (5, pac2); // erklære Pac2 som karakter
i = 15;/ * Definere antall kolonner for fienden */
/ * Lagringstid i tidsvariablene erklært ovenfor */
a = millis ();
b = millis ();
c = millis ();
d = millis ();
State1 = DigitalRead (knapp);/ * Leser tilstanden til knappen trykket på første gang */
mens (state1 == høy) / * hvis knappen ikke er trykket */
/ * Viser spillet og karakteranimasjonen */
LCD.setcursor (3, 0);
LCD.print ("ardi-pac");
LCD.setcursor (3, 1);
LCD.print ("trykk start");
LCD.setcursor (13, 0);
LCD.skriv (6);
forsinkelse (300);
LCD.setcursor (13, 0);
LCD.skriv (5);
forsinkelse (300);
State1 = DigitalRead (knapp);/* Les igjen tilstanden til trykknappen*/
if (state1 == lav) / * Hvis du trykker på, flytt til sløyfeseksjonen */
gå i stykker;


forsinkelse (500);

void loop ()
State2 = DigitalRead (knapp);/ * Kontroller tilstanden til knappen */
if (((millis ()-a)> = forsinkelse) /* start fiendens bevegelse på LCD* /
a = millis ();
LCD.klar();
LCD.setcursor (i, 1);
LCD.skriv (7);
i = i-1;
if (i == -1) /* tilstand for å flytte fienden på LCD -en fra 15 og gå til null*/
i = 15;

LCD.setcursor (6, 0);
LCD.print ("poeng:");
LCD.print (poeng);/ * Viser poengene oppnådd av spilleren */

if ((Millis ()-b)> = 50)
b = millis ();
if (state2 == low && pac == usann) / * vise tegn på LCD ved å lese tilstanden til knappen * /
LCD.setcursor (1, 0);/* plassering av tegnet på første kolonne og første rad når knappen trykkes*/
LCD.skriv (6);
Pac = True; / * Oppdaterer at ingen kollisjon med fiende */
B = millis ();/ * Lagre tiden */

ellers if (pac == true) /* hvis fremdeles ingen kollisjon plasser det på samme sted* /
LCD.setcursor (1, 0);
LCD.skriv (6);

ellers if (pac == falsk) /* Flytt tegnet til andre rad første kolonne på LCD*/
LCD.setcursor (1, 0);
LCD.skrive ut(" ");
LCD.setcursor (1, 1);
LCD.skriv (6);


if (((millis ()-c)> = 1500 && pac == true) / * hvis knappen trykkes igjen flytt tegnet til den første raden */
c = millis ();
LCD.setcursor (1, 1);
LCD.skriv (6);
LCD.setcursor (1, 0);
LCD.skrive ut(" ");
Pac = falsk;

if (((millis ()-d)> = 1000) && (i == 1)) /* Hvis fienden tar sin første runde LCD uten noen kollisjon* /
d = millis ();
if (pac == true)
Poeng = poeng+1;/* Kollisjon oppdages, legg deretter til en i poengene*/
if (peker%5 == 0)
Forsinkelse = forsinkelse-utførelse av
hvis (forsinkelse <= 200) //changed the speed of enemy to 200
RedusertLay = 0; / * Ikke øke fiendens hastighet */



ellers / * Når kollisjon oppstår, klar LCD- og visningsspillet over */
LCD.klar();
LCD.setcursor (0, 0);
LCD.trykk ("spill over!");
LCD.setcursor (0, 1);
LCD.print ("start på nytt");
poeng = 0;
i = 15;
Forsinkelse = 500; // bytter tilbake til grunnleggende hastighet
State2 = DigitalRead (knapp);
mens (state2 == høy) /* fortsett å lese tilstanden til knappen når staten er høy*/
State2 = DigitalRead (knapp); /*Hvis knappen trykket på knappen, så start spillet igjen*/

forsinkelse (500);


Vi har laget et enkelt spill som unngår kollisjonene med innkommende gjenstander, og for det har vi først erklært binærene for fienden og karakteren. Vi har også definert biblioteket for skjermen som brukes med Arduino Uno.

For å bevege fienden på LCD har vi brukt for -loopen som vil redusere en i dens verdi ved hver iterasjon. Neste for å flytte plasseringen av tegnet har vi brukt trykknappen på en slik måte at når knappen trykker på, beveger karakteren seg til den første raden i LCD.

For å bringe karakteren tilbake til det opprinnelige stedet vi har brukt Mills () -funksjonen. Vi har spart tiden da karakteren rykket opp og så har vi definert tiden etter at karakteren kommer tilbake til sin posisjon.

Når fiendens sted og karakteren får det samme, vil spillet stoppe og vil starte på nytt når knappen trykkes.

Hvordan lage maskinvare for å lage et spill ved hjelp av Arduino og LCD

Bildet nedenfor er implementeringen av maskinvare i henhold til maskinvarenheten beskrevet ovenfor:

Bildet ovenfor er hovedmenyen i spillet. Trykk på trykknappen starter spillet:

Ved å trykke på knappen vil karakteren hopp for å unngå fiender, og når du kolliderer med fienden, vises følgende meny:

For å illustrere hvordan spillet vil fungere har vi gitt den animerte GIF nedenfor:

Konklusjon

Arduino -plattformen kan brukes til å lage en rekke prosjekter som kan være til stor hjelp for nybegynnere å lære om kretsene. Vi har laget et spill der spilleren må unngå innkommende objekter. For å flytte spilleren har vi brukt trykknappen og beregnet også poengene som er lik antall hindringer som er unngått. Vi har også gitt Arduino -koden for å opprette spillet så vel som gitt maskinvaredemonstrasjonen.