Kazalo:

Stackers Arcade Game: 6 korakov (s slikami)
Stackers Arcade Game: 6 korakov (s slikami)

Video: Stackers Arcade Game: 6 korakov (s slikami)

Video: Stackers Arcade Game: 6 korakov (s slikami)
Video: Stalker | FULL MOVIE | Directed by Andrey Tarkovsky 2024, Julij
Anonim
Stackers Arcade Game
Stackers Arcade Game

Pozdravljeni, danes želim z vami deliti to neverjetno arkadno igro, ki jo lahko naredite s kopico LED -jev Ws2812b in mikrokrmilnikom/FPGA. Behold Stack Overflow - naša strojna izvedba klasične arkadne igre. Kar se je začelo kot šolski projekt, je hitro postalo delo ljubezni, saj smo začeli porabiti vse več časa za razvoj svoje igre in se od nje več učiti (ter zanemarjati študij v procesu xD). Na koncu je bila naša igra tako dobro zgrajena in dobro sprejeta v naši šoli, da so jo zaplenili (kot demo gradivo za naslednjo serijo učencev). No, vedno lahko zgradimo drugega. Začnimo!

Spletna različica igre:

1. korak: Kaj potrebujete?

Kaj potrebujete?
Kaj potrebujete?
Kaj potrebujete?
Kaj potrebujete?
Kaj potrebujete?
Kaj potrebujete?
Kaj potrebujete?
Kaj potrebujete?

Materiali:

1. mikrokrmilnik/mikroračunalnik/FPGA - FPGA se uporablja za izvajanje logike naše igre. Izberite svojo ploščo, za naš projekt moramo uporabiti ploščo Mojo FPGA. Za nepoznavalce je to vrsta plošče, ki uporablja strojno opremo za izvajanje svojih funkcij in ne kod. Zato bi rekel, da je precej nizka in popolnoma drugačna, kot če uporabljate Arduino ali Pi. Če uporabljate druge plošče, morate napisati svojo kodo, vendar je to igro precej enostavno kodirati in hej! Zdaj se lahko naučite tudi kodiranja!

2. LED diode Ws2812b - tukaj uporabljamo LED za izdelavo zaslona za našo igro. Ne morete biti izdelovalec, če se pred xD niste dotaknili Ws2812b. Enojno naslovljivo, kar pomeni, da lahko odrežete posamezne LED in jih prilepite v poljubno formacijo. RGB pomeni, da lahko natisnete poljubno barvo. Poleg tega je FastLED - knjižnica Arduino za nadzor Ws2812b zelo dobro razvita. Ljudem bi priporočil uporabo Arduina namesto FPGA, če ga nimate. LED diode lahko kupite pri Taobao/Amazon, mi pa smo jih kupili pri stolpu Sim Lim v Singapurju.

3. Les-Za zunanje ohišje smo uporabili vezane plošče debeline 1 cm, za LED matrico pa vezane plošče debeline 0,3 cm. Zalogo odpadnega lesa smo našli v laboratoriju naše šole.

4. Akril za razprševanje svetlobe - Za naš zaslon smo preizkusili različne vrste akrila in ugotovili smo, da je ta zmrznjeni akril, imenovan PL -422, zelo dober za razpršitev svetlobe. Če ne najdete natančnega modela, poskusite poiskati akrilne zlitine. Našega smo kupili v Dama Plastics v Singapurju.

5. Penasta plošča - Za ločitev posameznih svetlobnih pik smo potrebovali mrežno strukturo in ta pena je idealen material za to. V naši šolski knjigarni smo kupili penasto ploščo debeline 0,5 cm.

6. Veliki rdeči gumb - Ok, ni nujno, da imamo tako velik rdeč gumb, vendar je vedno dobro, da imamo gumb za udarce! xD Kupili smo ga v stolpu Sim Lim v Singapurju.

Orodja:

1. Lepilo za les

2. Spajkalnik

3. Spajkanje

4. Žice. Najbolje je, če imate mehke žice v primerjavi s tršimi. In eno jedro v primerjavi z večjedrnimi.

5. Odstranjevalec žice

6. Rezalnik žice

7. Vrtajte s svedri 1 mm

8. Drsna žaga

9. Tračna žaga

Odpravljanje napak:

1. Variabilna napajalna enota

2. Osciloskop

2. korak: hitro izdelavo prototipov

Hitra izdelava prototipov
Hitra izdelava prototipov
Hitra izdelava prototipov
Hitra izdelava prototipov
Hitra izdelava prototipov
Hitra izdelava prototipov
Hitra izdelava prototipov
Hitra izdelava prototipov

Za naš projekt smo uporabili hitro izdelavo prototipov, preden smo zgradili LED matriko in programirali igro. Razlog za to je, da ne želimo zgraditi LED matrike samo zato, da bi ugotovili, da naše kode ne delujejo ali da je logika igre pomanjkljiva.

Na strani strojne opreme smo na prvi stopnji pravkar preizkusili svojo logiko prestavljanja svetlobnih vzorcev na lastno preprosto matriko LED. Ko smo preverili, ali logika deluje dobro, smo nato odšli izrezati trakove 5 LED -jev Ws2812b samo zato, da preizkusimo logiko igre z različnimi vrsticami. Ko to uspe, nadaljujemo z izdelavo LED matrike v polnem obsegu.

Preden smo se odločili za PL-422 kot najboljši difuzor svetlobe, smo preizkusili tudi različne vzorce akrila z LED. Za strukturo ločevalnika smo preizkusili tudi različne višine, da se LED popolnoma razprši. Na koncu smo ugotovili, da je kvadrat 3 cm*3 cm z višino 4 cm najboljši za razpršitev. Na podlagi te optimalne velikosti smo se tudi odločili, kakšna je velikost vezanega lesa, potrebna za 5 x 11 LED matriko, tako da pustimo 0,5 cm vrzeli za peno med kvadratki.

Na strani programske opreme poskušamo biti čim bolj modularni - najprej preizkusimo, ali se lahko LED prižgejo, preden nadaljujemo z dodajanjem funkcije premika, nato pa še druge. Če tega ne storite, so lahko rezultati katastrofalni. Tega smo se naučili na težji način, ko smo celotno igro poskušali kodirati na veliko, preden smo ugotovili, da je ne moremo odpraviti. Joj!

3. korak: izdelava ohišja

Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja
Izdelava ohišja

Za naše ohišje smo šli s klasičnimi arkadnimi stroji, ki se počutijo in izgledajo. Najprej smo razrezali nekaj tanke vezane plošče, da hitro oblikujemo obliko, saj je lažje in hitreje rezati tanko vezano ploščo in jo preizkusiti. Ko smo bili zadovoljni z dimenzijami in obliko, smo za izdelavo ohišja začeli uporabljati debelejše vezane plošče. Za rezanje debelejše vezane plošče smo uporabili tračno žago, za tanjše pa rezalno žago. Po tem smo z lepilom za lepilo lepili skupaj.

Za zadnji del vezanega lesa smo želeli preprosto dostopati do elektronike v notranjosti, zato smo ga naredili v zaklenjenem kosu, ki ga lahko enostavno odstranite, kadar koli želite.

Za pritrditev gumba smo najprej narisali krog velikosti premera mikro stikala gumba (spodnji dolgi del gumba). Nato smo izvrtali luknjo blizu roba in z drsno žago prežagali krog. Nato smo postavili gumb in ga privili.

Odrezali smo tudi tanek kos vezanega lesa kot osnovo naše LED matrice glede na velikosti, ki smo jih izračunali prej.

Opomba: Opravičujem se zaradi pomanjkanja postopnega postopka. Korakov nismo dokumentirali do konca in ko smo spoznali, da moramo dokumentirati korake, je bilo ohišje že narejeno. Diagram tudi ni končnih dimenzij.

4. korak: Izdelava LED matrike

Izdelava LED matrice
Izdelava LED matrice
Izdelava LED matrice
Izdelava LED matrice

S tankim kosom, ki smo ga izrezali prej, najprej označimo položaj vsake LED, tako da na podlagi naše strukture pene narišemo kvadrat in na sredini kvadrata narišemo križ kot mesto, kamor bi morali LED prilepiti. Nato izvrtamo tudi 3 majhne luknje na vsaki strani LED, da pridejo žice skozi, in jih spajkamo na vsako LED.

Vsako vrstico LED povežemo z njihovimi vhodi za vhod in izhod podatkov in vsak GND in VCC spajkamo na skupno žico. Vodilni Data In bo za vsako vrstico ustvaril svetlobne vzorce, ki smo jih povezali s pinout mikrokontrolerja/FPGA. Zadnje podatke iz ene vrstice lahko tudi spajkate na vodilne podatke v drugi vrstici. Način delovanja LED Ws2812b je, da vsaka LED vsebuje IC, ki bo z žice vzela zahtevane podatke, preostale pa poslala po verigi. LED smo zasnovali na drugih fantastičnih navodilih (pravzaprav smo jih natančno kopirali! XD)

Tu bi radi poudarili tudi pomen uporabe mehkih žic. Če uporabljate toge, trde žice za vodilni pin Data In, se zgodi, da vsakič, ko vlečete žico, lahko izvleče bakreno oblogo na vašem Ws2812b, ki jo uniči. V tem projektu smo, preden smo prešli na mehke žice, uničili skupaj 40 LED, kar je 1/3 LED, potrebnih za naš projekt.

Navodila:

5. korak: Pisanje kod za igre in strojna oprema za odpravljanje napak

Pisanje kod za igre in strojna oprema za odpravljanje napak
Pisanje kod za igre in strojna oprema za odpravljanje napak
Pisanje kod za igre in strojna oprema za odpravljanje napak
Pisanje kod za igre in strojna oprema za odpravljanje napak
Pisanje kod za igre in strojna oprema za odpravljanje napak
Pisanje kod za igre in strojna oprema za odpravljanje napak

Mojo deluje na Lucid HDL, ki ni najbolj priljubljen jezik. V Lucidu ne najdemo LED knjižnic Ws2812b, zato smo se zatekli k pisanju lastne knjižnice, kar je zelo zanimiva izkušnja. Da bi to naredili, smo najprej analizirali signal, ki se oddaja z uporabo Arduinove knjižnice FastLED, in napisali kode, da to ponovimo. Tu je trik odpravljanja napak strojne opreme, osciloskop je zelo, zelo uporaben za analizo signalov, pa naj bo to odpravljanje napak vašega signala, za katerega niste prepričani, ali preverjanje in kopiranje drugih signalov.

Ko smo zapisali knjižnico za Ws2812b, smo nato nadaljevali s kodiranjem igre, s funkcijami Bit shift smo premaknili vsak blok v levo in desno ter uporabili Bitwise AND do AND kvadratov vsake vrstice v prejšnjo vrstico. Lahko si zamislite tudi izvedbo tega v Arduinu, kar ne bi smelo biti tako težko. Za zabavo smo celo kodirali zaslone iger!

Naša igra je imela 2 ravni, to je igra z vidnim zlaganjem (zelena) in druga stopnja nevidna igra zlaganja (modra).

Tudi potem, ko smo imeli delujoče kode in delujočo LED matriko, se včasih še vedno srečujemo s težavami, kot so utripanje luči ali prižiganje luči, ko ne bi smele. Težava je običajno posledica nepravilnega ozemljitve, napajanja ali motenj. Tu boste potrebovali druga orodja za odpravljanje napak strojne opreme, na primer spremenljivo napajalno enoto, da preverite, ali je napajanje Mojo/Arduino zadostno ali previsoko. Po mojih izkušnjah ima Ws2812b precej širok razpon delovnih napetosti od 2,8 do 5 V. Tukaj imam videoposnetek, ki prikazuje luči, ki so postale nori, potem ko povečam moč.

Vendar pa je nadaljnje preverjanje pokazalo, da smo imeli nekaj napačne spajke, potem ko smo jih ponovno spajkali, je bila naša težava rešena. Lahko bi prišlo tudi do motenj ali navzkrižnega pogovora, a na srečo se nismo nikoli soočili z nobenim od njih.

Kode Github:

Arduino Bitwise Shift:

Arduino Bitwise IN:

Korak 6: Vse združite

Združevanje vsega skupaj
Združevanje vsega skupaj
Združevanje vsega skupaj
Združevanje vsega skupaj
Združevanje vsega skupaj
Združevanje vsega skupaj
Združevanje vsega skupaj
Združevanje vsega skupaj

Imate ohišje in LED matriko. Zdaj je čas, da vse sestavimo. Najprej položimo peno na sprednjo stran in LED matriko za njo ter prilagodimo položaj. Ker ima pena zelo visoko trenje, je bila le nameščena na trenje, medtem ko je LED matrika vroče zlepljena. Nato smo zaslon postavili pred mrežo. Nato smo vtaknili zatič vsake vrstice v mikrokrmilnik in začeli igrati!: D

Pri tem projektu mi je všeč le njegova prilagodljivost, mikrokrmilnik lahko vedno znova programirate, da postane del druge igre, in poskusite nekaj, na primer ustvarjanje animacije ali reakcijske igre. Upam, da vam bo pri tem všeč in se boste za to kaj naučili. GgEz!

Priporočena: