Përmbajtje:

Arduino Space Gara lojë Versioni _1: 5 hapa
Arduino Space Gara lojë Versioni _1: 5 hapa

Video: Arduino Space Gara lojë Versioni _1: 5 hapa

Video: Arduino Space Gara lojë Versioni _1: 5 hapa
Video: Мухоморный 🍄Трип Фиксирую на камеру. Очутился между двух миров🌍 Реальным и Мухоморным🙏 2024, Qershor
Anonim
Image
Image

Hej miq. Sot jam në ganna t'ju tregoj se si mund të bëni një Lojë Gara e Hapësirës me ekran LCD5110 dhe me gëzim. Le të shikojmë hapat…

Hapi 1: NEVOJAT

SKEMA
SKEMA

Këtu është një listë e pjesëve që kam përdorur për të bërë këtë projekt:

  • Arduino UNO
  • Moduli i xhojstikut
  • Jumper Wires (mashkull për mashkull dhe mashkull për femër)
  • Breadboard

Hapi 2: SKEMA

VCC -> Arduino 5V

BL -> pin Arduino 3

GND -> Arduino GND

CLK (SCLK) -> Arduino pin 8

DIN (MOSI) -> Arduino pin 9

DC -> pin Arduino 10

CE ose CS -> Arduino pin 12

RST (RESET) -> Arduino pin 11

Hapi 3: KODI

KODI
KODI

Kodi ka shpjegime të funksioneve të kodit. Do ta kuptoni lehtësisht. Nëse keni ndonjë problem, mund të më kontaktoni.

#përfshi

LCD5110 LCD (8, 9, 10, 11, 12); // (clk, din, dc, rst, ce)

int BL = 3;

jashtme uint8_t SmallFont ; // përshkruani shkronjat e jashtme uint8_t MediumNumbers ; jashtme uint8_t arac ; // përshkruani formën tonë të jashtme uint8_t dusman_araci ; // përshkruaj formën e armikut const int xpin = A0; // levë x pin poz pozitë = 2; // përshkruani vendndodhjen, vendi ynë i fillimit të formës 2 kontrolli boolean = i vërtetë; boolean dusmanOldu = e vërtetë; int skor = 0; int hiz = 0; int dusmanKonumu1; // përshkruani armikun1 x vendndodhjen int dusmanKonumu2; // përshkruani armikun2 x vendndodhjen int dusmaninYdeKonumu; // përshkruani vendndodhjen e armiqve

void dusmanAraci (int yer, int asama) {// vendosni vende për format e armikut

nëse (yer == 1) {// nëse vendndodhja = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // vizatoni formën e armikut} nëse (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// nëse dështojmë, loja mbaron

ndërsa (1) {vonesë (100); // prisni 1 milisekonda lcd.clrScr (); // pastroni ekranin lcd.setFont (SmallFont); // vendos fontin lcd.print ("GAME OVER", CENTER, 20); // print lcd.update (); // përditëso ekranin}}

void setup () {pinMode (BL, OUTPUT); // kthejeni dritën Output lcd. InitLCD (); // filtroni ekranin LCD lcd.setContrast (55); // vendos kontrast (nga 0 në 127) Serial.fillo (9600); // fillo komunikimin serik}

lak void () {

analogWrite (BL, 200);

// vendosni ekranin e lojës lcd.drawRect (0, 0, 47, 47); // vizatojmë drejtkëndësh lcd.setFont (SmallFont); // vendos fontin lcd.print ("skor", 53, 0); // printf score lcd.setFont (Numrat e mesëm); // vendos fontin lcd.printNumI (skor, 59, 7); // merrni rezultatin lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // shpejtësia e printimit lcd.setFont (Numrat e mesëm); lcd.printNumI (hiz, 59, 32); // merrni shpejtësinë lcd.update (); // përditësim

// vendosni vendndodhjen e joyistick int x = analogRead (xpin); nëse (x <300 && pozisyon! = 1 && kontrol == vërtetë) {// nëse vendndodhja! = 1, x gjendja 600 && pozisyon! = 3 && kontrol == e vërtetë) {// nëse vendndodhja! = 3, x gjendje> 600 dhe kontrolli është pozisyon i vërtetë ++; // rrisni vendndodhjen do të thotë të lëvizni formën në të djathtë kontrol = false; } tjetër nëse (x> 300 && x <600) {kontrol = true; } Serial.println (x); // për të mësuar gjendjen x // vendosni vendndodhjen e formës sonë lcd.clrScr (); // pastroni ekranin nëse (pozisyon == 1) {// nëse vendndodhja = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // vizatoni anijen tonë nëse (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

nëse (pozizion == 3) {

lcd.drawBitmap (34, 37, arac, 12, 8);}

nëse (dusmanOldu) {// nëse forma e armikut ka vdekur, kontrolloni nëse janë të vdekur

dusmanKonumu1 = pozitë; // vizatoni formën e parë të armikut dusmanKonumu2 = e rastësishme (0, 4); // vizatoni një formë tjetër të armikut diku dusmaninYdeKonumu = 0; // sill armikun nga maja dusmanOldu = false;} // armiku rikrijohet që të mos jenë të vdekur dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // vizatoni formën e parë të armikut dhe merrni atë nga lart poshtë dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // vizatoni formën e dytë të armikut dhe merrni atë nga lart poshtë nëse (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozitë) || (dusmanKonumu2 == pozitë))) {// nëse forma jonë prek format e armikut oyunBitti ();} // loja ka mbaruar nëse (dusmaninYdeKonumu> 40) {// nëse forma jonë ikën nga armiqtë dusmanOldu = e vërtetë; // vrasin format e armikut skor ++;} // rrisin një nga një rezultatin // rrisin shpejtësinë sipas rezultatit nëse (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; vonesa (40); }}

Hapi 4: KODI BITMAP

Për më tepër, duhet të përfshini grafikë bitmap për format. Duhet të jetë një skedar.c dhe i njëjti emër me emrin e kodit. Gjithashtu, duhet të jetë në të njëjtin skedar.

// ---------------------------------------------------- ------------------------------ // Skedari i krijuar nga Asistenti LCD // https://en.radzio.dxp.pl /bitmap_converter/// ------------------------------------------------- --------------------------------- #Include // include për funksionin progmem

const unsigned char arac PROGMEM = {// bitmap -i i formës sonë

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

const char unsigned dusman_araci PROGMEM = {// bitmap anije armike

0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,};

Hapi 5: FALEMINDERIT P FORR SHIKIM

FALEMINDERIT P VIR SHIKIM
FALEMINDERIT P VIR SHIKIM

Para se të filloja të ndaj projektet e mia, u kodova me fjalë turke, kështu që nuk do të kisha mundësi të jepja çdo fjalë në anglisht. Këtu fjalët e përkthimit që përdor këtë projekt, Oyun = Lojë

Arac = Formë

Dusman = Armik

kontrol = kontroll

Konum, Yer = Vendndodhja

Oyun Bitti = Loja ka mbaruar

Skor = Rezultati

Hiz = Shpejtësia

Recommended: