INHOUDSOPGAWE:

Arduino Space Race Game weergawe _1: 5 stappe
Arduino Space Race Game weergawe _1: 5 stappe

Video: Arduino Space Race Game weergawe _1: 5 stappe

Video: Arduino Space Race Game weergawe _1: 5 stappe
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Julie
Anonim
Image
Image

Haai vriende. Ek wys u vandag hoe u 'n Space Race Game kan maak met 'n LCD5110 -skerm en joystic. Kom ons kyk na stappe …

Stap 1: BEHOEFTES

SKEMA
SKEMA

Hier is 'n lys van dele waarmee ek hierdie projek gemaak het:

  • Arduino UNO
  • Joystick -module
  • Jumper Wires (manlik tot manlik en manlik tot vroulik)
  • Broodbord

Stap 2: SKEMA

VCC -> Arduino 5V

BL -> Arduino -pen 3

GND -> Arduino GND

CLK (SCLK) -> Arduino -pen 8

DIN (MOSI) -> Arduino -pen 9

DC -> Arduino -pen 10

CE of CS -> Arduino -pen 12

RST (RESET) -> Arduino -pen 11

Stap 3: KODE

KODE
KODE

Die kode bevat verduidelikings van kodefunksies. U sal dit maklik verstaan. As u 'n probleem het, kan u my kontak.

#insluit

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

int BL = 3;

eksterne uint8_t SmallFont ; // beskryf die lettertipes extern uint8_t MediumNumbers ; ekstern uint8_t arac ; // beskryf ons vorm ekstern uint8_t dusman_araci ; // beskryf die vorm van die vyand const int xpin = A0; // joystick x pin char pozisyon = 2; // beskryf die ligging, ons vorm begin plek 2 boolean kontrol = true; boolean dusmanOldu = true; int skor = 0; int hiz = 0; int dusmanKonumu1; // beskryf vyand1 x ligging int dusmanKonumu2; // beskryf vyand2 x ligging int dusmaninYdeKonumu; // beskryf vyande en ligging

void dusmanAraci (int yer, int asama) {// stel plekke vir vyandelike vorms in

if (yer == 1) {// if location = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // teken vyandelike vorm} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } as (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

ongeldig oyunBitti () {// as ons misluk, is die spel verby

terwyl (1) {vertraging (100); // wag 1 milisekonde lcd.clrScr (); // maak die skerm lcd.setFont (SmallFont) skoon; // stel lettertipe lcd.print ("GAME OVER", CENTRE, 20); // druk lcd.update (); // werk die skerm op}}

ongeldige opstelling () {pinMode (BL, OUTPUT); // lig terugstel Output lcd. InitLCD (); // begin die lcd -skerm lcd.setContrast (55); // stel kontras (tussen 0 en 127) Serial.begin (9600); // begin met reekskommunikasie}

leemte -lus () {

analogWrite (BL, 200);

// stel spelskerm lcd.drawRect (0, 0, 47, 47); // ons teken reghoek lcd.setFont (SmallFont); // stel lettertipe lcd.print ("skor", 53, 0); // printf score lcd.setFont (MediumNumbers); // stel lettertipe lcd.printNumI (skor, 59, 7); // kry telling lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // druksnelheid lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // kry spoed lcd.update (); //Opdateer

// stel die joyistick -ligging int x = analogRead (xpin) in; if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3, x state> 600 en beheer is waar pozisyon ++; // verhoog die ligging wat dit beteken, skuif die vorm na die regte kontrol = false; } anders as (x> 300 && x <600) {kontrol = true; } Serial.println (x); // vir leer x staat // stel die ligging van ons vorm in lcd.clrScr (); // maak die skerm skoon as (pozisyon == 1) {// as location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // teken ons skip as (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

as (pozisyon == 3) {

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

as (dusmanOldu) {// as die vyand se vorm dood is, kyk of dit dood is

dusmanKonumu1 = pozisyon; // teken eerste vyandelike vorm dusmanKonumu2 = ewekansig (0, 4); // teken êrens 'n ander vyandelike vorm dusmaninYdeKonumu = 0; // bring vyand van bo af dusmanOldu = vals;} // vyand word herskep sodat hulle nie dood is nie dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // teken eerste vyandelike vorm en haal dit van bo na onder dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // teken die tweede vyandelike vorm en kry dit van bo na onder as (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// as ons vorm vyandelike vorms raak oyunBitti ();} // die spel is verby as (dusmaninYdeKonumu> 40) {// as ons vorm van vyande ontsnap dusmanOldu = waar; // maak vyandelike vorme dood++;} // verhoog die telling een vir een // verhoog die spoed volgens die telling as (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; vertraging (40); }}

Stap 4: KODE BITMAP

Verder moet u bitmap -grafika vir vorms insluit, dit moet 'n.c -lêer wees en dieselfde naam met kodenaam. Dit moet ook in dieselfde lêer wees.

// ------------------------------------------------ ------------------------------ // Lêer gegenereer deur LCD Assistant // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // include for progmem function

const unsigned char arac PROGMEM = {// ons vorm -bitmap

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

const unsigned char dusman_araci PROGMEM = {// vyandskip se bitmap

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

Stap 5: DANKIE VIR KYK

DANKIE VIR KYK
DANKIE VIR KYK

Voordat ek begin het om my projekte te deel, het ek Turkse woorde gekodeer, sodat ek nie elke woord in Engels kon skryf nie. Hier is die vertaling van woorde wat hierdie projek gebruik, Oyun = spel

Arac = Vorm

Dusman = Vyand

beheer = beheer

Konum, Yer = Ligging

Oyun Bitti = Game Over

Skor = telling

Hiz = Spoed

Aanbeveel: