Мазмуну:

Arduino Space Race оюнунун версиясы _1: 5 кадам
Arduino Space Race оюнунун версиясы _1: 5 кадам

Video: Arduino Space Race оюнунун версиясы _1: 5 кадам

Video: Arduino Space Race оюнунун версиясы _1: 5 кадам
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Сентябрь
Anonim
Image
Image

Эй достор. Бүгүн мен сизге LCD5110 экраны жана джойстик аркылуу космостук жарыш оюнун кантип жасоону көрсөтөм. Кадамдарды карап көрөлү …

1 -кадам: КЕРЕКТЕР

СХЕМА
СХЕМА

Бул жерде мен бул долбоорду жасоо үчүн колдонулган бөлүктөрдүн тизмеси:

  • Arduino UNO
  • Джойстик модулу
  • 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 pin 12

RST (КАЙРА ЖӨНДӨӨ) -> Arduino пин 11

3 -кадам: КОД

КОД
КОД

Коддо код функцияларынын түшүндүрмөлөрү бар. Сиз аны оңой эле түшүнөсүз. Эгерде сизде көйгөй болсо, мага кайрылсаңыз болот.

#кошуу

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

int BL = 3;

extern uint8_t SmallFont ; // шрифттерди сүрөттө extern uint8_t MediumNumbers ; extern uint8_t arac ; // формабызды сүрөттө extern uint8_t dusman_araci ; // душман формасын const int xpin = A0; // джойстик x pin char pozisyon = 2; // жайгашкан жерди сүрөттө, биздин формабыздын башталыш орду 2 логикалык kontrol = true; логикалык dusmanOldu = true; int skor = 0; int hiz = 0; int dusmanKonumu1; // душманды сүрөттөө1 x жайгашуу int dusmanKonumu2; // душманды сүрөттө2 x location int dusmaninYdeKonumu; // душмандарыңдын жайгашкан жерин сүрөттө

void dusmanAraci (int yer, int asama) {// душмандын фигуралары үчүн жерлерди коюңуз

if (yer == 1) {// if location = 1; lcd.drawBitmap (2, асама, dusman_araci, 12, 8); // душман формасын тартуу} if (yer == 2) {lcd.drawBitmap (18, asama, dusman_araci, 12, 8); } if (yer == 3) {lcd.drawBitmap (34, асама, dusman_araci, 12, 8); }}

void oyunBitti () {// эгерде биз ийгиликке жетпей калсак, оюн бүттү

while (1) {delay (100); // 1 миллисекунд күтүңүз lcd.clrScr (); // экранды тазалоо lcd.setFont (SmallFont); // шрифт lcd.print коюңуз ("ОЮН БУТТУ", БОРБОРУ, 20); // print lcd.update (); // экранды жаңыртуу}}

void setup () {pinMode (BL, OUTPUT); // артка жарык коюу Output lcd. InitLCD (); // lcd экранын баштоо lcd.setContrast (55); // контрастты коюу (0дон 127ге чейин) Serial.begin (9600); // сериялык байланышты баштоо}

void loop () {

analogWrite (BL, 200);

// оюн экранын коюу lcd.drawRect (0, 0, 47, 47); // биз lcd.setFont (SmallFont) тик бурчтук тартабыз; // арипти орнотуу lcd.print ("skor", 53, 0); // printf score lcd.setFont (MediumNumbers); // шрифтти lcd.printNumI коюңуз (skor, 59, 7); // упай алуу lcd.setFont (SmallFont); lcd.print ("хиз", 56, 25); // басып чыгаруу ылдамдыгы lcd.setFont (MediumNumbers); lcd.printNumI (хиз, 59, 32); // ылдамдыкты алуу lcd.update (); // жаңыртуу

// джойстиктин жайгашуусун коюу int x = analogRead (xpin); if (x <300 && pozisyon! = 1 && kontrol == true) {// if location! = 1, x state600 && pozisyon! = 3 && kontrol == true) {// if location! = 3, x state> 600 жана контролдоо чыныгы pozisyon ++; // жайгашууну көбөйтүү, бул форманы оңго жылдырууну билдирет kontrol = false; } else if (x> 300 && x <600) {kontrol = true; } Serial.println (x); // х абалын үйрөнүү үчүн // формабыздын жайгашуусун орнотуңуз lcd.clrScr (); // экранды тазалоо if (pozisyon == 1) {// if location = 1; lcd.drawBitmap (2, 37, arac, 12, 8);} // биздин кемени тарткыла if (pozisyon == 2) {lcd.drawBitmap (18, 37, arac, 12, 8);}

if (pozisyon == 3) {

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

if (dusmanOldu) {// душман формасы өлгөн болсо, анда алар өлгөнүн текшериңиз

dusmanKonumu1 = pozisyon; // биринчи душмандын формасын тарт dusmanKonumu2 = random (0, 4); // башка бир душмандын формасын тартуу dusmaninYdeKonumu = 0; // душманды жогору жактан алып келүү dusmanOldu = false;} // душман кайра жаратылган, ошондуктан алар өлгөн эмес dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // биринчи душмандын формасын чийип, аны өйдөдөн төмөн карай алыңыз dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu ++; // душмандын экинчи формасын тартып, аны өйдөдөн ылдыйга чейин алыңыз, эгерде (dusmaninYdeKonumu> 22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon)))) // эгер биздин формабыз душманга тийсе oyunBitti ();} // оюн бүттү if (dusmaninYdeKonumu> 40) {// эгер биздин формабыз душмандардан качса dusmanOldu = true; // душмандын фигураларын өлтүрүү skor ++;} // баллды бирден жогорулатуу // упайга жараша ылдамдыгын жогорулатуу (skor> = 0 && skor10 && skor20 && skor30 && skor <= 40) {hiz = 3; кечиктирүү (40); }}

4 -кадам: BITMAP КОДУ

Мындан тышкары, сиз фигуралар үчүн графикалык графикти киргизишиңиз керек. Бул c. Файл жана ошол эле аталышта болушу керек. Ошондой эле ал ошол файлда болушу керек.

// ------------------------------------------------ ------------------------------ // Файл LCD Жардамчысы тарабынан түзүлгөн // https://en.radzio.dxp.pl /bitmap_converter/// --------------------------------------------- --------------------------------- #include // program функциясы үчүн камтыйт

const unsigned char arac PROGMEM = {// биздин форма битмапы

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

const unsigned char dusman_araci PROGMEM = {// душман кемесинин битмапы

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

5 -кадам: Көргөнүңүзгө рахмат

КӨРГӨНҮҢҮЗ ҮЧҮН РАХМАТ
КӨРГӨНҮҢҮЗ ҮЧҮН РАХМАТ

Мен долбоорлорум менен бөлүшө баштоодон мурун, мен түркчө сөздөрдү коддомокмун, андыктан ар бир сөздү англисче колдоно албадым.

Оюн = Оюн

Арак = Формасы

Дусман = Душман

kontrol = control

Konum, Yer = Location

Оюн Бити = Оюн бүттү

Skor = Упай

Хиз = Ылдамдык

Сунушталууда: