Բովանդակություն:

Arduino Space Race Game Տարբերակ _1: 5 քայլ
Arduino Space Race Game Տարբերակ _1: 5 քայլ

Video: Arduino Space Race Game Տարբերակ _1: 5 քայլ

Video: Arduino Space Race Game Տարբերակ _1: 5 քայլ
Video: REAL RACING 3 LEAD FOOT EDITION 2024, Նոյեմբեր
Anonim
Image
Image

Բարև ընկերներ: Այսօր ես ganna- ն ձեզ ցույց կտամ, թե ինչպես կարող եք տիեզերական մրցավազքի խաղ պատրաստել LCD5110 էկրանով և ուրախացնող: Եկեք նայենք քայլերին…

Քայլ 1: ԿԱՐՈՆԵՐ

Սխեմա
Սխեմա

Ահա այն մասերի ցանկը, որոնք ես օգտագործել եմ այս նախագիծը պատրաստելու համար.

  • Arduino UNO
  • Joystick մոդուլ
  • Jumper Wires (արականից արական և արականից իգական)
  • Breadboard

Քայլ 2: SCHEMA

VCC -> Arduino 5V

BL -> Arduino քորոց 3

GND -> Arduino GND

CLK (SCLK) -> Arduino փին 8

DIN (MOSI) -> Arduino փին 9

DC -> Arduino քորոց 10

CE կամ CS -> Arduino քորոց 12

RST (RESET) -> Arduino քորոց 11

Քայլ 3: ԿՈԴ

ԿՈԴ
ԿՈԴ

Կոդն ունի ծածկագրի գործառույթների բացատրություններ: Դուք հեշտությամբ կհասկանաք դա: Եթե խնդիր ունեք, կարող եք կապվել ինձ հետ:

#ներառում

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

int BL = 3;

extern uint8_t SmallFont ; // նկարագրել արտաքին տառատեսակները uint8_t MediumNumbers ; extern uint8_t arac ; // նկարագրել մեր ձևը արտաքին uint8_t dusman_araci ; // նկարագրել թշնամու ձևը const int xpin = A0; // joystick x pin char pozisyon = 2; // նկարագրեք գտնվելու վայրը, մեր ձևի մեկնարկի վայրը 2 բուլյան վերահսկում = ճշմարիտ; բուլյան dusmanOldu = ճշմարիտ; int skor = 0; int hiz = 0; int dusmanKonumu1; // նկարագրել հակառակորդին 1 x տեղադրություն int dusmanKonumu2; // նկարագրել հակառակորդին 2 x տեղադրություն int dusmaninYdeKonumu; // նկարագրեք թշնամիների գտնվելու վայրը

void dusmanAraci (int yer, int asama) {// թշնամու ձևերի տեղադրման վայրեր

եթե (yer == 1) {// եթե գտնվելու վայրը = 1; lcd.drawBitmap (2, asama, dusman_araci, 12, 8); // նկարել թշնամու ձևը} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, asama, dusman_araci, 12, 8); }}

void oyunBitti () {// եթե ձախողվենք, խաղը կավարտվի

իսկ (1) {հետաձգում (100); // սպասել 1 միլիարդ վայրկյան lcd.clrScr (); // մաքրել էկրանը lcd.setFont (SmallFont); // սահմանել տառատեսակը lcd.print ("GAME OVER", CENTER, 20); // տպել lcd.update (); // թարմացնել էկրանը}}

void setup () {pinMode (BL, OUTPUT); // հետադարձ լույս թողնել lcd. InitLCD (); // նախաստորագրել lcd էկրանը lcd.setContrast (55); // սահմանել հակադրություն (ամուն 0 -ից մինչև 127 -ը) Serial.begin (9600); // սկսել սերիական հաղորդակցություն}

դատարկ շրջան () {

analogWrite (BL, 200);

// սահմանել խաղի էկրանը lcd.drawRect (0, 0, 47, 47); // մենք նկարում ենք ուղղանկյուն lcd.setFont (SmallFont); // սահմանել տառատեսակ lcd.print ("skor", 53, 0); // printf հաշիվ lcd.setFont (միջին թվեր); // սահմանել տառատեսակը lcd.printNumI (skor, 59, 7); // ստանալ միավոր lcd.setFont (SmallFont); lcd.print («hiz», 56, 25); // տպման արագություն lcd.setFont (MediumNumbers); lcd.printNumI (hiz, 59, 32); // ստանալ արագություն lcd.update (); // թարմացում

// սահմանել joyistick- ի գտնվելու վայրը int x = analogRead (xpin); եթե (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3, x վիճակ> 600 և վերահսկողությունը ճիշտ է pozisyon ++; // բարձրացնել տեղադրությունը նշանակում է ձևը տեղափոխել աջ kontrol = false; } else if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // x վիճակը սովորելու համար // սահմանեք մեր ձևի գտնվելու վայրը lcd.clrScr (); // մաքրել էկրանը if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // նկարեք մեր նավը, եթե (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

եթե (դրական = 3) {

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

եթե (dusmanOldu) {// եթե թշնամու ձևը մեռած է, ստուգեք, արդյոք նրանք մահացած են

dusmanKonumu1 = դրական; // նկարել առաջին թշնամու ձևը dusmanKonumu2 = պատահական (0, 4); // նկարել մեկ այլ թշնամու ձև ինչ -որ տեղ dusmaninYdeKonumu = 0; // բերեք թշնամուն վերևից dusmanOldu = false;} // թշնամին վերստեղծվում է, որպեսզի նրանք մահացած չլինեն dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // նկարել թշնամու առաջին ձևը և ստանալ այն վերևից ներքև dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // գծեք երկրորդ թշնամու ձևը և ստացեք այն վերևից ներքև, եթե (dusmaninYdeKonumu> 22 && (((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))) {// եթե մեր ձևը դիպչում է թշնամուն oyunBitti ();};} // խաղն ավարտված է, եթե (dusmaninYdeKonumu> 40) {// եթե մեր ձևը փախչում է թշնամիներից dusmanOldu = true; // սպանել թշնամու ձևերը skor ++;} // մեկ առ մեկ բարձրացնել հաշիվը // բարձրացնել արագությունը ըստ հաշվի, եթե (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; ուշացում (40); }}

Քայլ 4. ԿՈԴԻՐ BITMAP

Ավելին, դուք պետք է ներառեք bitmap գրաֆիկա ձևերի համար: Այն պետք է լինի.c ֆայլ և նույն անունը `կոդի անունով: Բացի այդ, այն պետք է լինի նույն ֆայլում:

// ---------------------------------------------------- ------------------------------ // LCD օգնականի կողմից ստեղծված ֆայլ // https://en.radzio.dxp.pl /bitmap_converter/// ------------------------------------------------- ------------------------------------- #ներառել // ներառել progmem գործառույթի համար

const unsigned char arac PROGMEM = {// մեր ձևի bitmap

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

const unsigned char dusman_araci PROGMEM = {// թշնամու նավի bitmap

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

Քայլ 5: ՇՆՈՐՀԱԿԱԼՈ VIԹՅՈ FORՆ ԴԻՏԵԼՈ ՀԱՄԱՐ

ՇՆՈՐՀԱԿԱԼՈ VIԹՅՈՆ ԴԻՏԵԼՈ ՀԱՄԱՐ
ՇՆՈՐՀԱԿԱԼՈ VIԹՅՈՆ ԴԻՏԵԼՈ ՀԱՄԱՐ

Մինչև ես սկսեի կիսվել իմ նախագծերով, ծածկագրված էի թուրքերեն բառերով, այնպես որ ես չէի կարող յուրաքանչյուր բառ անգլերեն պատահական համարել: Ահա այն բառերի թարգմանությունը, որոնք օգտագործում են այս նախագիծը, Օյուն = Խաղ

Arac = Ձև

Դուսման = Թշնամի

վերահսկում = վերահսկողություն

Konum, Yer = Որտեղից

Oyun Bitti = Խաղն ավարտված է

Skor = Հաշիվ

Հիզ = Արագություն

Խորհուրդ ենք տալիս: