Sadržaj:

Arduino Space Rocks igra: 3 koraka
Arduino Space Rocks igra: 3 koraka

Video: Arduino Space Rocks igra: 3 koraka

Video: Arduino Space Rocks igra: 3 koraka
Video: Дедушка не выдержал и дал ответ за Украинский флаг 2024, Studeni
Anonim
Igra Arduino Space Rocks
Igra Arduino Space Rocks

Bilo da se igraju na računalu, na telefonu, na igraćoj konzoli ili na zasebnoj kutiji, mnoge video igre uključuju element izbjegavanja prepreka. Naravno, mogu se dodijeliti bodovi za prikupljanje žetona ili snalaženje u labirintu, ali budite uvjereni da u igri vjerojatno postoji nešto čija je jedina svrha spriječiti vas u tome. Prva video igra bila je Pong, no nakon toga najpopularnije igre bile su stvari poput "Asteroida" ili "Pac-Mana". Novija varijanta bila bi jednostavna, ali zarazna igra "Flappy Birds".

Nedavno sam vidio da je netko napravio jednostavnu dvorazinsku verziju "Flappy Bird" koja se puštala na uobičajenom LCD-u od 1602. Mislio sam da bi se unucima to moglo svidjeti pa sam odlučio napraviti svoju varijaciju ispočetka. Verzija 1602 ima samo dvije razine pa sam odlučio umjesto 2004. koristiti LCD (20x4) kako bih malo povećao poteškoće u igri. Odlučio sam i učiniti ga sličnijim "Asteroidima" tako što će igrač voditi "brod" kroz labirint "svemirskih stijena". Čak i ako niste zainteresirani za izradu igre, možda postoje neki elementi softvera koje možete koristiti u nekom od svojih projekata.

Korak 1: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Hardver se može temeljiti na gotovo svakoj verziji Arduina. Napravio sam izradu prototipa pomoću Nano -a, a zatim snimio kod u ATMega328 čip. To je isti čip koji se koristi u Nano -u, ali njegovo samo korištenje omogućuje kompaktniju izradu i manju potrošnju energije. Kao što vidite, sklop sam izgradio na maloj ploči koja se vraća na LCD modul. Drugi aspekt koji se razlikuje je da Nano radi na 16-MHz pomoću vanjskog kristala, ali ja sam odabrao korištenje ugrađenog oscilatora od 8 MHz za ATMega328 čip. Time se štede dijelovi i snaga.

LCD LCD iz 2004. sučeljava se s Arduinom na isti način kao i LCD sa 1602. Zanimljiva je razlika u adresiranju mjesta prikaza. Očito postoji razlika jer postoje četiri retka umjesto dvije, ali 2004. godine treći redak je produžetak prvog retka, a četvrti redak je produžetak drugog retka. Drugim riječima, ako ste imali testni program koji je upravo poslao niz znakova na LCD, 21. znak bi se pojavio na početku trećeg retka, a 41. znak se vraća na početak prvog retka. Koristim tu karakteristiku u softveru za učinkovito udvostručavanje duljine labirinta.

Odlučio sam svoju verziju napajati baterijom pa sam upotrijebio uobičajenu 18650 Li-ion bateriju od 3,6 V. To je zahtijevalo da dodam malu ploču za dopunjavanje USB -a i drugu malu ploču za povećanje napona baterije na 5 volti za LCD i ATMega čip. Slike prikazuju module koje sam koristio, ali postoje i sve-u-jednom moduli koji obavljaju obje funkcije.

Korak 2: Softver

Softver je isti i za Nano i za ATMega328 čip. Jedina razlika je u načinu programiranja. Koristim svoju barebones verziju 1602 LCD softvera i LCD softver u ovom projektu temelji se na tome. Morao sam dodati mogućnosti za rješavanje dodatnih linija zaslona 2004., a također sam dodao i rutine za pomicanje zaslona. Promjena prikaza daje učinak kretanja "stijena" pored "broda".

Kao što je ranije spomenuto, linije 1 i 3 tvore kružni red, a linije 2 i 4 također. To znači da se nakon 20 smjena mijenjaju linije 1 i 3, a linije 2 i 4. Nakon 40 smjena linije se vraćaju u prvobitni položaj. Zbog takvog ponašanja, izvorni labirint od 20 znakova postaje potpuno drugačiji kada se linije zamijene. To je život učinilo zanimljivim kada sam pokušao stvoriti labirint. Konačno sam upravo otvorio Excel proračunsku tablicu kako bih mogao zacrtati put bez potrebe za stalnom promjenom softvera. Ovdje ponuđeni softver ima dvije verzije labirinta (jedna je komentirana) pa možete odabrati koju želite ili izmisliti vlastitu.

Prvotno sam želio da ovo bude dovoljno jednostavno da ga mladi unuci mogu igrati, ali također sam htio da to bude dodatni izazov ako oni (ili netko drugi) u tome budu previše dobri. Igra počinje s promjenom brzine postavljenom na 1 sekundu. Interna brzina kretanja iznosi 50 ms, što znači da postoji 20 intervala tijekom kojih se mogu pritisnuti tipke za gore/dolje. U stvari, pritisnuti gumb troši 2 tika jer se interval od 50 ms koristi za otkrivanje pritiska, a drugi interval od 50 ms koristi se za čekanje otpuštanja. Uz zadani labirint, maksimalni broj pritisaka prije sljedeće smjene je tri. Jednostavan način povećanja poteškoća u igri je skratiti vrijeme između smjena tako da nekoliko redaka koda učini upravo to s povećanjem rezultata. Brzina izmjene postavljena je tako da se ubrzava za 50 ms svakih 20 smjena, a minimalna brzina ograničena je na 500 ms. Lako je promijeniti ove parametre.

Osim mijenjanja brzine pomaka, primarna logika u softveru je pomicanje "broda" i utvrđivanje je li se "brod" sudario sa "stijenom". Ove funkcije koriste prednosti definiranog polja "rock/space", kao i niza koji definira memorijske lokacije na zaslonu. Brojanje pomaka odgovara duljini retka LCD-a (0-19) i koristi se kao indeks u tim nizovima. Logika je donekle komplicirana činjenicom da se linije koje se mijenjaju svakih 20 smjena računaju. Slična se logika koristi za određivanje položaja "broda" koji može biti na bilo kojoj od četiri linije.

Bodovi za svaku predstavu su jednostavno brojanje broja izmjena koje su se dogodile, a visoka ocjena se sprema u unutarnji EEROM mikrokontrolera. Knjižnica EEPROM koristi se za čitanje i pisanje u ovu memoriju. Dostupne rutine dopuštaju jednobajtno čitanje/pisanje i čitanje/pisanje vrijednosti s pomičnim zarezom. Vrijednost 0xA5 pohranjena je na prvom mjestu EEROM -a kako bi označila da je spremljena visoka ocjena. Ako je ta vrijednost prisutna pri uključivanju, tada se očitava i prikazuje vrijednost s pomičnim zarezom za visoku ocjenu. Ako vrijednost 0xA5 nije prisutna, tada se poziva rutina za inicijalizaciju visoke ocjene na vrijednost 1. Ta ista rutina se poziva ako se želi resetiranje visoke ocjene. Visoka ocjena vraća se na vrijednost 1 držanjem jedne od tipki za gore/dolje, a zatim kratkim pritiskom na tipku za poništavanje.

Korak 3: Igranje igre

Igranje igre
Igranje igre
Igranje igre
Igranje igre

Kad se napajanje uključi, prikazuje se trenutna visoka ocjena. Nakon što se prikaže visoka ocjena, prikazuju se labirint "stijena" i "brod", a igra počinje nekoliko sekundi kasnije. Kad "brod" udari o "stijenu", poruka "CRASH AND BURN" treperi nekoliko puta prije nego što se prikaže rezultat za igru. Ako se postigne nova visoka ocjena, tada će se prikazati i ta poruka. Nova igra započinje pritiskom na gumb za poništavanje.

Preporučeni: