Kazalo:

Igra Arduino Space Rocks: 3 koraki
Igra Arduino Space Rocks: 3 koraki

Video: Igra Arduino Space Rocks: 3 koraki

Video: Igra Arduino Space Rocks: 3 koraki
Video: 🔥Українська Авіація НАЙКРАЩА! (2 Частина)#ukraine #shorts 2024, Julij
Anonim
Igra Arduino Space Rocks
Igra Arduino Space Rocks

Ne glede na to, ali se igrajo na računalniku, telefonu, igralni konzoli ali samostojni škatli, veliko video iger vključuje element izogibanja oviram. Seveda lahko pridete do točk za zbiranje žetonov ali iskanje poti skozi labirint, vendar bodite prepričani, da je v igri verjetno nekaj, čigar edini namen je, da vam to prepreči. Prva video igra je bila Pong, nato pa so bile najbolj priljubljene igre, kot so "Asteroidi" ali "Pac-Man". Novejša različica bi bila preprosta, a zasvojljiva igra "Flappy Birds".

Pred kratkim sem videl, da je nekdo naredil preprosto dvostopenjsko različico "Flappy Bird", ki se je predvajala na običajnem LCD-ju 1602. Mislil sem, da bi to lahko bilo vnukom všeč, zato sem se odločil, da naredim svojo različico od začetka. Različica 1602 ima samo dve stopnji, zato sem se raje odločil za uporabo LCD -ja iz leta 2004 (20x4), da bi nekoliko povečal težavnost igranja. Odločil sem se tudi, da bi bil bolj podoben "Asteroidom", tako da bi igralec vodil "ladjo" skozi labirint "vesoljskih kamnin". Tudi če vas igra ne zanima, lahko obstajajo nekateri elementi programske opreme, ki jih lahko uporabite v enem od svojih projektov.

1. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Strojna oprema lahko temelji na skoraj vsaki različici Arduina. Naredil sem izdelavo prototipov z Nano, nato pa kodo zapisal v čip ATMega328. To je isti čip, ki se uporablja v Nano, vendar njegova uporaba sama po sebi omogoča bolj kompaktno izdelavo in manjšo porabo energije. Kot lahko vidite, sem vezje zgradil na majhni ploščici, ki se je vrnila na modul LCD. Drugi vidik, ki je drugačen, je, da Nano deluje pri 16-MHz z zunanjim kristalom, vendar sem se odločil uporabiti vgrajen 8-MHz oscilator za čip ATMega328. To prihrani dele in moč.

LCD iz leta 2004 se povezuje z Arduinom na enak način kot LCD 1602. Zanimiva razlika je pri naslavljanju prikazovalnih mest. Očitno je razlika, ker so namesto dveh štiri vrstice, toda leta 2004 je tretja vrstica podaljšek prve vrstice, četrta vrstica pa podaljšek druge vrstice. Z drugimi besedami, če bi imeli preskusni program, ki je ravno poslal niz znakov na LCD, bi se 21. znak prikazal na začetku tretje vrstice, 41. znak pa se vrne nazaj na začetek prve vrstice. To lastnost uporabljam v programski opremi za učinkovito podvojitev dolžine labirinta.

Odločil sem se, da bom svojo različico napajal z baterijo, zato sem uporabil običajno 18650 Li-ion, 3,6-voltno baterijo. To je zahtevalo, da dodam majhno ploščo za polnjenje USB in drugo majhno ploščo za povečanje napetosti baterije na 5 voltov za LCD in ATMega čip. Slike prikazujejo module, ki sem jih uporabil, obstajajo pa tudi moduli vse v enem, ki opravljajo obe funkciji.

2. korak: Programska oprema

Programska oprema je enaka za čip Nano in ATMega328. Edina razlika je v načinu programiranja. Uporabljam lastno različico programske opreme 1602 LCD barebones in programska oprema LCD v tem projektu temelji na tem. Moral sem dodati zmogljivosti za obravnavo dodatnih vrstic zaslona 2004 in dodal tudi rutine za premik zaslona. Premik prikaza zagotavlja učinek gibanja "kamenja" mimo "ladje".

Kot smo že omenili, vrstici 1 in 3 tvorita krožno čakalno vrsto, liniji 2 in 4 pa prav tako. To pomeni, da se po 20 izmenah vrstici 1 in 3 zamenjata, vrstici 2 in 4 pa zamenjata. Po 40 premikih se vrvice vrnejo v prvotne položaje. Zaradi tega vedenja izvirni labirint z 20 znaki postane popolnoma drugačen, ko se vrstici zamenjata. To je naredilo življenje zanimivo, ko sem poskušal oblikovati labirint. Končno sem odprl Excelovo preglednico, da sem lahko začrtal pot, ne da bi mi bilo treba nenehno spreminjati programsko opremo. Tukaj ponujena programska oprema ima dve različici labirinta (eno je komentirano), tako da lahko izberete katero želite ali si jo ustvarite sami.

Sprva sem si želel, da bi bilo to dovolj preprosto, da bi ga lahko igrali mladi vnuki, vendar sem si želel tudi, da bi imel nekaj dodatnega izziva, če bi se (ali kdo drug) preveč dobro znašel. Igra se začne s hitrostjo premika, nastavljeno na 1 sekundo. Notranji tečaj je 50 ms, kar pomeni, da obstaja 20 intervalov, med katerimi je mogoče pritisniti gumbe gor/dol. V resnici pritisnjeni gumb porabi 2 tika, ker se 50 -milimetrski interval uporablja za zaznavanje tiska, drugi 50 -minutni interval pa se uporablja za čakanje na sprostitev. Pri privzetem labirintu je največje število pritiskov pred naslednjo izmeno tri. Preprost način za povečanje težavnosti igre je skrajšanje časa med izmenami, tako da nekaj vrstic kode naredi ravno to, ko se rezultat poveča. Hitrost prestavljanja je nastavljena tako, da se pospeši za 50 ms na 20 premikov, pri čemer je najmanjša stopnja omejena na 500 ms. Te parametre je enostavno spremeniti.

Razen spreminjanja hitrosti premika je primarna logika programske opreme premik "ladje" in ugotavljanje, ali je "ladja" trčila v "kamen". Te funkcije izkoriščajo definirano matriko »rock/space« in tudi matriko, ki definira pomnilniške lokacije na zaslonu. Število premikov ustreza dolžini vrstice LCD-ja (0-19) in se uporablja kot indeks teh nizov. Logiko nekoliko zaplete dejstvo, da šteje menjava vrstic na vsakih 20 premikov. Podobna logika se uporablja za določanje položaja "ladje", ki je lahko na kateri koli od štirih črt.

Rezultat za vsako igro je preprosto štetje števila premikov, ki so se zgodili, in visoka ocena se shrani v notranji EEROM mikrokrmilnika. Knjižnica EEPROM se uporablja za branje in pisanje v ta pomnilnik. Razpoložljive rutine omogočajo enobajtno branje/pisanje in branje/pisanje vrednosti s plavajočo vejico. Vrednost 0xA5 je shranjena na prvi lokaciji EEROM, kar pomeni, da je shranjena visoka ocena. Če je ta vrednost prisotna ob vklopu, se prebere in prikaže vrednost s plavajočo vejico za najvišjo oceno. Če vrednost 0xA5 ni prisotna, se pokliče rutina za inicializacijo visoke ocene na vrednost 1. Ta ista rutina se pokliče, če je potrebna ponastavitev visoke ocene. Najvišji rezultat se vrne na vrednost 1, tako da pritisnete enega od gumbov gor/dol in nato za trenutek pritisnete gumb za ponastavitev.

3. korak: Igranje igre

Igranje igre
Igranje igre
Igranje igre
Igranje igre

Ko je napajanje priključeno, se prikaže trenutna najvišja ocena. Ko se prikaže najvišja ocena, se prikažeta labirint "skal" in "ladje", nato pa se igra začne nekaj sekund kasneje. Ko "ladja" zadene "kamen", nekajkrat utripa sporočilo "ZASKLADI IN ZGORI", preden se prikaže rezultat za igro. Če je dosežen nov visok rezultat, se prikaže tudi to sporočilo. Nova igra se začne s pritiskom na gumb za ponastavitev.

Priporočena: