Spisu treści:

Arduino Space Race Wersja gry _1: 5 kroków
Arduino Space Race Wersja gry _1: 5 kroków

Wideo: Arduino Space Race Wersja gry _1: 5 kroków

Wideo: Arduino Space Race Wersja gry _1: 5 kroków
Wideo: ILU POLICJANTÓW POTRZEBA ABY OBEZWŁADNIĆ OJCA BEZ SPRZĘTU 2024, Listopad
Anonim
Image
Image

Cześć przyjaciele. Dzisiaj pokażę Ci, jak możesz zrobić grę w wyścigi w kosmos za pomocą ekranu LCD5110 i joystic. Spójrzmy na kroki…

Krok 1: POTRZEBY

SCHEMAT
SCHEMAT

Oto lista części, których użyłem do wykonania tego projektu:

  • Arduino UNO
  • Moduł joysticka
  • Przewody połączeniowe (męski na męski i męski na żeński)
  • Deska do krojenia chleba

Krok 2: SCHEMAT

VCC -> Arduino 5V

BL -> pin Arduino 3

GND -> GND Arduino

CLK (SCLK) -> pin Arduino 8

DIN (MOSI) -> pin Arduino 9

DC -> pin Arduino 10

CE lub CS -> pin Arduino 12

RST (RESET) -> pin Arduino 11

Krok 3: KOD

KOD
KOD

Kod zawiera objaśnienia funkcji kodu. Łatwo to zrozumiesz. Jeśli masz problem, możesz się ze mną skontaktować.

#włączać

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

int BL=3;

extern uint8_t SmallFont; //opisz czcionki extern uint8_t MediumNumbers; extern uint8_t arac; //opisz nasz kształt extern uint8_t dusman_araci; //opisz kształt wroga const int xpin=A0; //joystick x pin char pozisyon=2; //opisz lokalizację, nasz kształt start location 2 boolean kontrol = true; boolean dusmanOldu = prawda; int skor=0; int hiz=0; int dusmanKonumu1; //opisz wroga1 x położenie int dusmanKonumu2; //opisz wroga2 x położenie int dusmaninYdeKonumu; //opisz wrogów i lokalizację

void dusmanAraci(int yer, int asama){ //ustaw lokalizacje dla wrogich kształtów

if (yer==1){ //jeśli lokalizacja=1; lcd.drawBitmap(2, asama, dusman_araci, 12, 8); //narysuj kształt wroga } if (yer==2){ lcd.drawBitmap(18, asama, dusman_araci, 12, 8); } if (yer==3){ lcd.drawBitmap(34, asama, dusman_araci, 12, 8); }}

void oyunBitti() { //jeśli nam się nie uda, gra się kończy

while(1) {opóźnienie(100); //czekaj 1 milisekundę lcd.clrScr(); //wyczyść ekran lcd.setFont(SmallFont); //ustaw czcionkę lcd.print("KONIEC GRY", CENTRUM, 20); //drukuj lcd.update(); //zaktualizuj ekran }}

void setup() { pinMode(BL, OUTPUT); //ustaw podświetlenie Output lcd. InitLCD(); //zainicjuj ekran lcd lcd.setContrast(55); //ustaw kontrast(od 0 do 127) Serial.begin(9600); //rozpocznij komunikację szeregową }

pusta pętla () {

analogZapis(BL, 200);

//ustaw ekran gry lcd.drawRect(0, 0, 47, 47); //rysujemy prostokąt lcd.setFont(SmallFont); //ustaw czcionkę lcd.print("skor", 53, 0); //printf score lcd.setFont(MediumNumbers); //ustaw czcionkę lcd.printNumI(skor, 59, 7); //pobierz wynik lcd.setFont(SmallFont); lcd.print("hiz", 56, 25); //szybkość drukowania lcd.setFont(MediumNumbers); lcd.printNumI(hiz, 59, 32); //pobierz prędkość lcd.update(); //aktualizacja

//ustaw położenie joysticka 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 i kontrola to prawdziwa pozyzja++; //zwiększenie położenia to znaczy przesunięcie kształtu w prawo kontrol=false; } else if(x>300 && x<600){ kontrol=true; } Serial.println(x); //do nauki stanu x //ustaw lokalizację naszego kształtu lcd.clrScr(); //wyczyść ekran if (pozisyon==1){ //if location=1; lcd.drawBitmap(2, 37, arac, 12, 8);} //narysuj nasz statek if (pozisyon==2){ lcd.drawBitmap(18, 37, arac, 12, 8);}

jeśli (pozycja==3){

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

if (dusmanOldu){ //jeśli wrogi kształt jest martwy, sprawdź, czy nie żyje

dusmanKonumu1 = pozycja; //narysuj pierwszy kształt wroga dusmanKonumu2 = random(0, 4); //narysuj gdzieś inny kształt wroga dusmaninYdeKonumu = 0; //przynieś wroga z góry dusmanOldu = false;} //wróg zostaje odtworzony, aby nie był martwy dusmanAraci (dusmanKonumu1, dusmaninYdeKonumu); dusmaninYdeKonumu++; //narysuj pierwszy kształt wroga i przenieś go od góry do dołu dusmanAraci (dusmanKonumu2, dusmaninYdeKonumu); dusmaninYdeKonumu++; //narysuj drugi kształt wroga i pobierz go od góry do dołu if (dusmaninYdeKonumu>22 && ((dusmanKonumu1 == pozisyon) || (dusmanKonumu2 == pozisyon))){ //jeśli nasz kształt dotknie kształtów wroga oyunBitti();} //gra jest skończona if (dusmaninYdeKonumu>40){ //jeśli nasz kształt ucieknie przed wrogami dusmanOldu = true; //zabij wrogie kształty skor++;} //zwiększ wynik jeden po drugim //zwiększ prędkość zgodnie z wynikiem if (skor>=0 && skor10 && skor20 && skor30 && skor<=40){ hiz = 3; opóźnienie(40); } }

Krok 4: MAPA BITOWA KODU

Ponadto musisz dołączyć grafikę bitmapową dla kształtów. Musi to być plik.c i taka sama nazwa z nazwą kodową. Musi być również w tym samym pliku.

//------------------------------------------------ ------------------------------// Plik wygenerowany przez Asystenta LCD // https://pl.radzio.dxp.pl /konwerter_bitmapy/ //-------------------------------------------------- --------------------------------- #include //include dla funkcji programu

const unsigned char arac PROGMEM = { //nasza bitmapa kształtu

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

const unsigned char dusman_araci PROGMEM = { //bitmapa statku wroga

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

Krok 5: DZIĘKI ZA ZOBACZENIE

DZIĘKI ZA OBEJRZENIE
DZIĘKI ZA OBEJRZENIE

Zanim zacząłem dzielić się moimi projektami, kodowałem w tureckich słowach, więc nie mogłem zaryzykować każdego słowa na angielski. Tutaj tłumaczenie słów, których używam w tym projekcie, Ojun = Gra

Arac = Kształt

Dusman = Wróg

kontrola = kontrola

Konum, Yer = Lokalizacja

Oyun Bitti = Koniec gry

Skok = Wynik

Hiz = Prędkość

Zalecana: