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: Приказ комиссара. Warhammer 40k 2024, Juli
Anonim
Igra Arduino Space Rocks
Igra Arduino Space Rocks

Bilo da se igraju na računaru, na telefonu, na igraćoj konzoli ili na samostalnoj 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, ali 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 neko napravio jednostavnu dvostepenu verziju “Flappy Bird” koja se puštala na uobičajenom LCD ekranu od 1602. Mislio sam da bi se unucima to moglo svidjeti pa sam odlučio napraviti svoju varijaciju ispočetka. Verzija 1602 ima samo dva nivoa pa sam odlučio umjesto 2004. koristiti LCD (20x4) kako bih malo povećao poteškoće u sviranju. Odlučio sam i učiniti ga više sličnim "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 Arduino verziji. Napravio sam izradu prototipa koristeći Nano, a zatim snimio kod u ATMega328 čip. To je isti čip koji se koristi u Nano -u, ali njegova uporaba sama po sebi omogućuje kompaktniju izradu i manju potrošnju energije. Kao što vidite, izgradio sam kolo na maloj ploči koja se vraća na LCD modul. Drugi aspekt koji se razlikuje je da Nano radi na 16-MHz koristeći vanjski kristal, ali ja sam odlučio koristiti ugrađeni oscilator od 8 MHz za ATMega328 čip. Time se štede dijelovi i snaga.

LCD LCD iz 2004. godine sučeljava se s Arduinom na isti način kao i 1602 LCD. Zanimljiva razlika je u adresiranju lokacija prikaza. Očigledno postoji razlika jer postoje četiri linije umjesto dvije, ali je 2004. godine treća linija produžetak prve linije, a četvrta linija je produžetak druge linije. 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 efikasno udvostručavanje dužine labirinta.

Odlučio sam svoju verziju napajati baterijom pa sam koristio uobičajenu 18650 Li-ion bateriju od 3,6 volti. 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 je zasnovan na tome. Morao sam da dodam mogućnosti za adresiranje dodatnih linija ekrana iz 2004. godine, a takođe sam dodao i rutine za pomeranje ekrana. Pomak na ekranu pruža efekat kretanja „kamenja“pored „broda“.

Kao što je ranije spomenuto, linije 1 i 3 čine kružni red, a linije 2 i 4 također čine. 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 na prvobitne položaje. 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.

Prvobitno sam želio da ovo bude dovoljno jednostavno da je mogu igrati mladi unuci, ali sam isto tako želio da to bude dodatni izazov ako oni (ili neko drugi) budu previše dobri u tome. Igra počinje sa brzinom izmjene postavljenom na 1 sekundu. Interna brzina kretanja je 50 ms, što znači da postoji 20 intervala tokom kojih se mogu pritisnuti tipke gore/dolje. U stvari, pritisnuto dugme troši 2 tika jer se interval od 50 ms koristi za detekciju pritiska, a drugi interval od 50 ms se koristi za čekanje oslobađanja. Uz zadani labirint, maksimalni broj pritisaka prije sljedeće smjene je tri. Jednostavan način da povećate poteškoće u igri je skratiti vrijeme između smjena tako da nekoliko redova koda učini upravo to kako se rezultat povećava. Brzina smjene je postavljena tako da se ubrzava za 50 ms svakih 20 smjena, s minimalnom brzinom ograničenom 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 "rock/space" niza, kao i niza koji definira memorijske lokacije na ekranu. Brojanje pomaka odgovara dužini linije LCD-a (0-19) i koristi se kao indeks u ovim nizovima. Logika je donekle komplicirana činjenicom da se linije zamjenjuju svakih 20 smjena. Slična logika koristi se za određivanje položaja "broda" koji može biti na bilo kojoj od četiri linije.

Rezultat za svaku predstavu je jednostavno brojanje broja izmjena koje su se dogodile, a visoka ocjena se sprema u interni EEROM mikrokontrolera. EEPROM biblioteka se koristi za čitanje i pisanje u ovu memoriju. Dostupne rutine dozvoljavaju jednobajtno čitanje/pisanje i čitanje/pisanje vrijednosti s pomičnim zarezom. Vrijednost 0xA5 pohranjena je na prvoj lokaciji EEROM -a kako bi označila da je sačuvana 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 poništavanje visoke ocjene. Visoka ocjena se vraća na vrijednost 1 držanjem jednog od gumba za gore/dolje, a zatim kratkim pritiskom na gumb za poništavanje.

Korak 3: Igranje igre

Igranje igre
Igranje igre
Igranje igre
Igranje igre

Kada se napajanje uključi, prikazuje se trenutna visoka ocjena. Nakon što se prikaže visoki rezultat, prikazuju se labirint „stijena“i „broda“, 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 tipku za poništavanje.

Preporučuje se: