Mündəricat:

Arduino Space Race Oyunun Versiyası _1: 5 Addım
Arduino Space Race Oyunun Versiyası _1: 5 Addım

Video: Arduino Space Race Oyunun Versiyası _1: 5 Addım

Video: Arduino Space Race Oyunun Versiyası _1: 5 Addım
Video: Cihazınız nasıl düzeltilir Bu sürüm android (2022) ile uyumlu değil 2024, Noyabr
Anonim
Image
Image

Salam dostlar. Bu gün sizə LCD5110 ekranı və joystic ilə Space Race Oyunu necə edə biləcəyinizi göstərmək istəyirəm.

Addım 1: GEREKLER

ŞEMA
ŞEMA

Bu layihəni hazırladığım hissələrin siyahısı:

  • Arduino UNO
  • Joystick Modulu
  • Jumper telləri (kişidən kişiyə və kişidən qadına)
  • Çörək lövhəsi

Addım 2: SCHEMA

VCC -> Arduino 5V

BL -> Arduino pin 3

GND -> Arduino GND

CLK (SCLK) -> Arduino pin 8

DIN (MOSI) -> Arduino pin 9

DC -> Arduino pin 10

CE və ya CS -> Arduino pin 12

RST (SIFIRLA) -> Arduino pin 11

Addım 3: KOD

KOD
KOD

Kodda kod funksiyalarının izahları var. Asanlıqla başa düşəcəksiniz. Bir probleminiz varsa mənimlə əlaqə saxlaya bilərsiniz.

#daxil edin

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

int BL = 3;

extern uint8_t SmallFont ; // şriftləri təsvir edin extern uint8_t MediumNumbers ; xarici uint8_t vasitə ; // şəklimizi təsvir edin extern uint8_t dusman_araci ; // düşmən formasını təsbit edin const int xpin = A0; // joystick x pin char pozisyon = 2; // yeri təsvir edin, şəklimizin başlanğıc yeri 2 boolean kontrol = doğru; boolean dusmanOldu = doğru; int skor = 0; int hiz = 0; int dusmanKonumu1; // düşməni təsvir edin1 x yeri int dusmanKonumu2; // düşməni təsvir edin2 x yeri int dusmaninYdeKonumu; // düşmənlərin yerini təsvir edin

void dusmanAraci (int yer, int asama) {// düşmən formaları üçün yerləri təyin edin

if (yer == 1) {// əgər yer = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // düşmən şəklini çəkin} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } əgər (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// uğursuz olsaq, oyun bitər

isə (1) {gecikmə (100); // 1 milisaniyə gözləyin lcd.clrScr (); // ekranı təmizləyin lcd.setFont (SmallFont); // font font lcd.print ("OYUN OVER", MƏRKƏZ, 20); // çap lcd.update (); // ekranı yeniləyin}}

boş quraşdırma () {pinMode (BL, ÇIXIŞ); // işığı geri çəkin Çıxış lcd. InitLCD (); // lcd ekran lcd.setContrast (55) başlatın; // kontrastı təyin edin (0 ilə 127 arasında) Serial.begin (9600); // seriyalı ünsiyyətə başlayın}

boşluq döngəsi () {

analogWrite (BL, 200);

// oyun ekranını təyin edin lcd.drawRect (0, 0, 47, 47); // düzbucaqlı lcd.setFont (SmallFont) çəkirik; // font lcd.print ("skor", 53, 0) təyin edin; // printf skoru lcd.setFont (Medium Numbers); // font lcd.printNumI təyin edin (skor, 59, 7); // bal əldə edin lcd.setFont (SmallFont); lcd.print ("hiz", 56, 25); // çap sürəti lcd.setFont (Medium Numbers); lcd.printNumI (hiz, 59, 32); // sürəti lcd.update () əldə edin; // yeniləmə

// joyistick yerini int x = analogRead (xpin) təyin edin; if (x <300 && pozisyon! = 1 && kontrol == doğru) {// əgər yer! = 1, x state600 && pozisyon! = 3 && kontrol == doğru) {// əgər yer! = 3, x vəziyyəti> 600 və nəzarət doğru pozisyon ++; // yerini artırmaq deməkdir ki, formanı sağa keçir = saxta; } başqa if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // x vəziyyətini öyrənmək üçün // forma yerimizi təyin edin lcd.clrScr (); // ekranı təmizləyin, əgər (pozisyon == 1) {// yeri = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // gəmimizi çəkin əgər (pozisyon == 2) {lcd.drawBitmap (18, 37, vasitə, 12, 8);}

əgər (pozisyon == 3) {

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

if (dusmanOldu) {// düşmən forması ölmüşsə, yox olduqlarını yoxlayın

dusmanKonumu1 = mövqe; // ilk düşmən şəklini çək dusmanKonumu2 = təsadüfi (0, 4); // bir yerə başqa bir düşmən şəkli çəkin dusmaninYdeKonumu = 0; // düşməni yuxarıdan gətir dusmanOldu = false;} // düşmən yenidən yaradılır ki, ölü olmasın dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // ilk düşmən şəklini çəkin və yuxarıdan aşağıya doğru alın dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // ikinci düşmən şəklini çəkin və yuxarıdan aşağıya doğru alın (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// əgər şəklimiz düşmənə toxunarsa oyunBitti ();} // oyun bitdi, əgər (dusmaninYdeKonumu> 40) {// formamız düşmənlərdən qaçarsa dusmanOldu = doğru; // düşmən formalarını öldür skor ++;} // hesabı bir -bir artır.. // skora görə sürəti artır (əgər skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; gecikmə (40); }}

Addım 4: BITMAP -ı KODLAYIN

Bundan əlavə, şekiller üçün bitmap qrafikini daxil etməlisiniz. Bu bir.c faylı və kod adı ilə eyni ad olmalıdır. Eyni faylda olmalıdır.

// ------------------------------------------------ ------------------------------ // Fayl LCD köməkçisi tərəfindən yaradılmışdır // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // proqram funksiyası üçün daxildir

const unsigned char arac PROGMEM = {// forma bitmapimiz

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

const unsigned char dusman_araci PROGMEM = {// düşmən gəmisinin bitmapi

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

Addım 5: Baxdığınız üçün təşəkkürlər

Baxdığınız üçün təşəkkürlər
Baxdığınız üçün təşəkkürlər

Layihələrimi paylaşmağa başlamazdan əvvəl türkcə sözlərlə kodladım, buna görə hər sözümü ingilis dilinə təsadüf edə bilmədim. Burada bu layihəni istifadə etdiyim sözlərin tərcüməsi, Oyun = Oyun

Arac = Forma

Dusman = Düşmən

nəzarət = nəzarət

Konum, Yer = Yer

Oyun Bitti = Oyun bitdi

Skor = Qol

Hiz = Sürət

Tövsiyə: