Përmbajtje:

Arduino Space Rocks Lojë: 3 hapa
Arduino Space Rocks Lojë: 3 hapa

Video: Arduino Space Rocks Lojë: 3 hapa

Video: Arduino Space Rocks Lojë: 3 hapa
Video: Аномально вкусно‼️ ЧЕХОСЛОВАЦКИЙ СУП ИЗ ФАРША. Жена Липована в шоке. 2024, Nëntor
Anonim
Lojë Arduino Space Rocks
Lojë Arduino Space Rocks

Pavarësisht nëse luhen në një kompjuter, në një telefon, në një tastierë lojërash, ose në një kuti të pavarur, shumë video lojëra përfshijnë një element të shmangies së pengesave. Sigurisht, mund të jepen pikë për mbledhjen e shenjave ose gjetjen e rrugës tuaj nëpër një labirint, por jini të sigurt se ndoshta ka diçka në lojë qëllimi i vetëm i të cilit është t'ju parandalojë ta bëni këtë. Loja e parë video ishte Pong, por pas kësaj lojërat më të njohura ishin gjëra të tilla si "Asteroidet" ose "Pac-Man". Një ndryshim më i fundit do të ishte loja e thjeshtë por problematike e "Flappy Birds".

Kohët e fundit pashë që dikush kishte bërë një version të thjeshtë me dy nivele të "Flappy Bird" që luhej në një LCD të zakonshëm 1602. Mendova se do të ishte diçka që nipërit dhe mbesat mund ta pëlqejnë, kështu që vendosa të bëj ndryshimin tim nga e para. Versioni 1602 ka vetëm dy nivele, kështu që vendosa të përdor një LCD 2004 (20x4) në vend që të rris pak vështirësinë e lojës. Unë gjithashtu zgjodha ta bëj atë më shumë si "Asteroidët" duke e detyruar lojtarin të drejtojë një "anije" përmes një labirinti të "shkëmbinjve hapësinorë". Edhe nëse nuk jeni të interesuar në ndërtimin e lojës, mund të ketë disa elementë të softuerit që mund t'i përdorni në një nga projektet tuaja.

Hapi 1: Pajisje kompjuterike

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Pajisja mund të bazohet në pothuajse çdo version Arduino. Kam bërë prototipin duke përdorur një Nano dhe më pas e kam djegur kodin në një çip ATMega328. Ky është i njëjti çip i përdorur në Nano, por përdorimi i tij në vetvete lejon një ndërtim më kompakt dhe më pak konsum të energjisë. Siç mund ta shihni, unë e ndërtova qarkun në një dërrasë të vogël buke që ishte derrkuc në modulin LCD. Aspekti tjetër që është i ndryshëm është se Nano funksionon në 16-MHz duke përdorur një kristal të jashtëm, por unë zgjodha të përdor oshilatorin e integruar 8-MHz për çipin ATMega328. Kjo kursen pjesë dhe fuqi.

LCD 2004 ndërfaqet me Arduino në të njëjtën mënyrë si një LCD 1602. Një ndryshim interesant është në adresimin e vendeve të shfaqjes. Natyrisht që ka një ndryshim sepse ka katër rreshta në vend të dy, por, në vitin 2004, rreshti i tretë është një shtrirje e vijës së parë dhe rreshti i katërt është një shtrirje e vijës së dytë. Me fjalë të tjera, nëse do të kishit një program testimi që sapo dërgonte një varg karakteresh në LCD, personazhi i 21 -të do të shfaqej në fillim të rreshtit të tretë dhe personazhi i 41 -të mbyllet në fillim të rreshtit të parë. Unë e përdor atë karakteristikë në softuer për të dyfishuar në mënyrë efektive gjatësinë e labirintit.

Vendosa ta bëj versionin tim me bateri, kështu që përdor një bateri të zakonshme 18650 Li-ion, 3.6 volt. Kjo kërkoi që të shtoja një tabelë të vogël për të lejuar rimbushjen USB dhe një tabelë tjetër të vogël për të rritur tensionin e baterisë në 5 volt për LCD dhe çipin ATMega. Fotografitë tregojnë modulet që kam përdorur, por ka edhe module të gjitha në një që bëjnë të dy funksionet.

Hapi 2: Softueri

Softueri është i njëjtë si për çipin Nano ashtu edhe për ATMega328. Dallimi i vetëm është në metodën e programimit. Unë përdor versionin tim barebones të softverit 1602 LCD dhe softueri LCD në këtë projekt bazohet në këtë. Më duhej të shtoja aftësitë për të adresuar linjat shtesë të ekranit 2004 dhe gjithashtu shtova rutina për zhvendosjen e ekranit. Zhvendosja e ekranit siguron efektin e lëvizjes së "shkëmbinjve" përtej "anijes".

Siç u përmend më herët, rreshtat 1 dhe 3 formojnë një radhë rrethore dhe rreshtat 2 dhe 4 bëjnë gjithashtu. Kjo do të thotë që pas 20 ndërrimeve, linjat 1 dhe 3 ndërrohen dhe linjat 2 dhe 4 ndërrohen. Pas 40 ndërrimeve linjat kthehen në pozicionet e tyre origjinale. Për shkak të kësaj sjelljeje, labirinti origjinal me 20 karaktere bëhet krejtësisht i ndryshëm kur linjat ndërrohen. Kjo e bëri jetën interesante kur u përpoqa të krijoja një labirint. Më në fund sapo hapa një spreadsheet të Excel -it në mënyrë që të mund të përcaktoja rrugën pa pasur nevojë të ndryshoja vazhdimisht softuerin. Softueri i ofruar këtu ka dy versione të labirintit (njëri komentohet) kështu që ju mund të zgjidhni atë që dëshironi ose të krijoni tuajin.

Fillimisht doja që kjo të ishte mjaft e thjeshtë që nipërit e vegjël ta luanin atë, por gjithashtu doja që ajo të kishte ndonjë sfidë shtesë nëse ata (ose dikush tjetër) do të ishin shumë të mirë në të. Loja fillon me normën e ndërrimit të vendosur në 1 sekondë. Shkalla e brendshme e tikut është 50ms kështu që do të thotë se ka 20 intervale gjatë të cilave mund të shtypen butonat lart/poshtë. Në fakt, një buton i shtypur konsumon 2 tika sepse një interval prej 50ms përdoret për të zbuluar shtypjen dhe një interval tjetër 50ms përdoret për të pritur lëshimin. Me labirintin e paracaktuar, numri maksimal i shtypjeve të kërkuara para ndërrimit të ardhshëm është tre. Mënyra e thjeshtë për të rritur vështirësinë e lojës është të shkurtoni kohën midis ndërrimeve, kështu që disa rreshta të kodit e bëjnë këtë me rritjen e rezultatit. Shkalla e ndërrimit është vendosur të shpejtohet me 50ms çdo 20 ndërrime, me normën minimale të kufizuar në 500ms. Easyshtë e lehtë të ndryshosh këto parametra.

Përveç ndryshimit të shkallës së zhvendosjes, logjika kryesore në softuer është lëvizja e "anijes" dhe përcaktimi nëse "anija" është përplasur me një "shkëmb". Këto funksione përfitojnë nga grupi i përcaktuar "shkëmb/hapësirë" dhe gjithashtu grupin që përcakton vendet e kujtesës në ekran. Numërimi i ndërrimit korrespondon me gjatësinë e rreshtit të LCD (0-19) dhe përdoret si indeks në këto vargje. Logjika është disi e komplikuar nga fakti se linjat ndërrohen çdo 20 numërime të ndërrimit. Logjikë e ngjashme përdoret për të përcaktuar pozicionin e "anijes" e cila mund të jetë në cilëndo nga katër rreshtat.

Rezultati për secilën lojë është thjesht numërimi i numrit të ndërrimeve që ndodhën dhe rezultati i lartë ruhet në EEROM të brendshëm të mikrokontrolluesit. Biblioteka EEPROM përdoret për të lexuar dhe shkruar në këtë kujtesë. Rutinat e disponueshme lejojnë që një byte të lexojë/shkruajë dhe lexojë/shkruajë vlera të pikave lundruese. Një vlerë prej 0xA5 ruhet në vendin e parë të EEROM për të treguar që një rezultat i lartë është ruajtur. Nëse kjo vlerë është e pranishme gjatë fuqizimit, atëherë vlera e pikës lundruese për pikën e lartë lexohet dhe shfaqet. Nëse vlera 0xA5 nuk është e pranishme, atëherë thirret një rutinë për të inicializuar rezultatin e lartë në një vlerë 1. E njëjta rutinë quhet nëse dëshironi një rivendosje të rezultatit të lartë. Rezultati i lartë kthehet në vlerën 1 duke mbajtur të shtypur njërën nga butonat lart/poshtë dhe më pas duke shtypur në çast butonin e rivendosjes.

Hapi 3: Luajtja e lojës

Duke luajtur Lojën
Duke luajtur Lojën
Duke luajtur Lojën
Duke luajtur Lojën

Kur aplikohet fuqia, shfaqet rezultati i lartë aktual. Pasi shfaqet rezultati i lartë, labirinti i "shkëmbinjve" dhe "anijes" shfaqen, atëherë loja fillon disa sekonda më vonë. Kur "anija" godet një "shkëmb" mesazhi "RRESH DHE Djeg" ndizet disa herë para se të shfaq rezultatin për lojën. Nëse bëhet një rezultat i ri i lartë, atëherë ai mesazh shfaqet gjithashtu. Një lojë e re fillon duke shtypur butonin e rivendosjes.

Recommended: