Turinys:

Krovimo mašinų arkadinis žaidimas: 6 žingsniai (su paveikslėliais)
Krovimo mašinų arkadinis žaidimas: 6 žingsniai (su paveikslėliais)

Video: Krovimo mašinų arkadinis žaidimas: 6 žingsniai (su paveikslėliais)

Video: Krovimo mašinų arkadinis žaidimas: 6 žingsniai (su paveikslėliais)
Video: Гоночная браузерная игра высочайшего качества 🏎🚗🚙🚘 - Burnin' Rubber 5 XS Race 1-6 GamePlay 🎮📱 🇷🇺 2024, Lapkritis
Anonim
Krovimo mašinų arkadinis žaidimas
Krovimo mašinų arkadinis žaidimas

Sveiki, vaikinai, šiandien noriu su jumis pasidalinti šiuo nuostabiu arkadiniu žaidimu, kurį galite sukurti naudodami daugybę Ws2812b šviesos diodų ir mikrovaldiklį/FPGA. Žiūrėkite „Stack Overflow“- mūsų klasikinio arkadinio žaidimo techninė įranga. Tai, kas prasidėjo kaip mokyklos projektas, greitai tapo meilės darbu, nes vis daugiau laiko praleidome kurdami savo žaidimą ir daugiau iš jo mokydamiesi (ir nepaisydami savo studijų xD). Galų gale mūsų žaidimas buvo taip gerai sukurtas ir gerai priimtas mūsų mokykloje, kad jis buvo konfiskuotas (kaip demonstracinė medžiaga kitai mokinių partijai). Na, mes visada galime sukurti antrą. Pradėkime!

Internetinė žaidimo versija:

1 žingsnis: ko jums reikia?

Ko tau reikia?
Ko tau reikia?
Ko tau reikia?
Ko tau reikia?
Ko tau reikia?
Ko tau reikia?
Ko tau reikia?
Ko tau reikia?

Medžiagos:

1. mikrokontroleris/mikrokompiuteris/FPGA - FPGA naudojama mūsų žaidimo logikai įgyvendinti. Pasirinkite savo lentą, mūsų projektui mes privalome naudoti „Mojo FPGA“plokštę. Nežinantiems tai yra plokštės tipas, kuris savo funkcijoms įgyvendinti naudoja aparatūrą, o ne kodus. Taigi sakyčiau, kad jis yra gana žemas ir visiškai kitoks nei naudojant „Arduino“ar „Pi“. Jei naudojate kitas lentas, turite parašyti savo kodą, tačiau šį žaidimą gana lengva koduoti ir ei! Dabar jūs taip pat galite išmokti koduoti!

2. Ws2812b šviesos diodai - čia mes naudojame šviesos diodus, kad sukurtume žaidimo ekraną. Negali būti kūrėjas, jei prieš xD nepalietėte „Ws2812b“. Tai yra vienas adresas, tai reiškia, kad galite išjungti atskirus šviesos diodus ir įklijuoti juos į bet kurį jums patinkantį darinį. RGB reiškia, kad galite išvesti bet kokią jums patinkančią spalvą. Be to, „FastLED“- „Arduino“biblioteka, skirta valdyti Ws2812b, yra labai gerai išvystyta. Aš rekomenduočiau žmonėms vietoj FPGA naudoti „Arduino“, jei to neturite. Šviesos diodus galite įsigyti iš „Taobao“/„Amazon“, bet mes nusipirkome savo iš „Sim Lim“bokšto Singapūre.

3. Mediena-Išoriniam apvalkalui naudojome 1 cm storio fanerą, o LED matricai-0,3 cm storio fanerą. Medienos laužo atsargas radome iš mokyklos fabriko.

4. Šviesą sklaidantis akrilas - savo ekrane išbandėme įvairių tipų akrilą ir radome šį matinį akrilą, pavadintą PL -422, kuris tikrai tinka skleisti šviesą. Jei nerandate tikslaus modelio, pabandykite ieškoti matinio akrilo. Mes nusipirkome „Dama Plastics“Singapūre.

5. Putplasčio plokštė - norint atskirti kiekvieną atskirą šviesos tašką, mums reikėjo tinklelio struktūros ir ši putplastis yra ideali medžiaga. Mokyklos knygyne nusipirkome 0,5 cm storio putų lentą.

6. Didelis raudonas mygtukas - Gerai, mums nebūtina turėti tokio didelio raudono mygtuko, bet visada gerai turėti mygtuką, kurį žmonės spustelėtų! xD Mes nusipirkome jį Sim Lim bokšte Singapūre.

Įrankiai:

1. Medienos klijai

2. Lituoklis

3. Lituoklis

4. Laidai. Geriausia, jei turite minkštus laidus, palyginti su standesniais. Ir vieno branduolio, palyginti su daugiasluoksne.

5. Vielos nuėmiklis

6. Vielos pjaustytuvas

7. Gręžkite 1 mm grąžtais

8. Slinkties pjūklas

9. Juostinis pjūklas

Derinimas:

1. Kintamo maitinimo blokas

2. Osciloskopas

2 žingsnis: greitas prototipų kūrimas

Greitas prototipų kūrimas
Greitas prototipų kūrimas
Greitas prototipų kūrimas
Greitas prototipų kūrimas
Greitas prototipų kūrimas
Greitas prototipų kūrimas
Greitas prototipų kūrimas
Greitas prototipų kūrimas

Savo projektui mes panaudojome greitą prototipų kūrimą prieš kurdami LED matricą ir programuodami žaidimą. Taip yra todėl, kad nenorime kurti LED matricos vien tam, kad suprastume, jog mūsų kodai neveikia arba mūsų žaidimo logika yra tam tikra prasme.

Kalbant apie aparatinę įrangą, pirmajame etape mes tik išbandėme savo logiką, kaip perkelti šviesos modelius į savo paprastą LED matricą. Kai patikrinome, ar logika veikia gerai, tada išėjome iškirpti 5 Ws2812b šviesos diodų juostas, kad tik išbandytume savo žaidimo logiką su skirtingomis eilėmis. Kai tai pasiteisins, mes pradėsime gaminti LED matricą visu mastu.

Mes taip pat išbandėme įvairius akrilo pavyzdžius su šviesos diodu, prieš nuspręsdami, kad PL-422 yra geriausias šviesos difuzorius. Ir dėl separatoriaus struktūros mes taip pat išbandėme skirtingus aukščius, kad šviesos diodas visiškai išsisklaidytų. Galų gale mes supratome, kad 3 cm*3 cm kvadratas su 4 cm aukščiu yra geriausias sklaidai. Remdamiesi šiuo optimaliu dydžiu, mes taip pat nusprendėme, kokio dydžio faneros reikia 5 x 11 LED matricai, palikdami 0,5 cm tarpą putoms tarp kvadratų.

Kalbant apie programinę įrangą, mes stengiamės būti kuo moduliškesni - prieš pradėdami pridėti perjungimo funkciją, pirmiausia išbandome, ar šviesos diodai gali užsidegti, o po to - kitus. Jei to nepadarysite, rezultatai gali būti katastrofiški. Mes to išmokome sunkiai, nes bandėme koduoti visą žaidimą dideliu gabalu, kol supratome, kad negalime jo derinti. Oho!

3 žingsnis: korpuso gamyba

Korpuso gamyba
Korpuso gamyba
Korpuso gamyba
Korpuso gamyba
Korpuso gamyba
Korpuso gamyba
Korpuso gamyba
Korpuso gamyba

Savo korpusui pasirinkome klasikinius arkadinius mašinų pojūčius ir išvaizdą. Pirma, mes supjaustome ploną fanerą, kad greitai sukurtume formos prototipą, nes lengviau ir greičiau pjaustyti ploną fanerą ir išbandyti. Kai buvome patenkinti savo matmenimis ir forma, pradėjome naudoti storesnę fanerą korpuso statybai. Mes panaudojome juostinį pjūklą, norėdami perpjauti storesnę fanerą, o slinkimo pjūklą - perpjauti plonesnę. Po to mes juos klijavome medienos klijais.

Faneros gale norėjome lengvai pasiekti viduje esančią elektroniką, todėl padarėme ją užrakto vietoje, kurią galite lengvai nuimti, kai tik norite.

Norėdami pritvirtinti mygtuką, pirmiausia nupiešėme apskritimą, kurio dydis yra mygtuko mikro jungiklio skersmuo (apatinė ilga mygtuko dalis). Tada mes išgręžėme skylę netoli krašto ir slinkimo pjūklu pjovėme apskritimą. Tada uždėjome mygtuką ir įsukome.

Mes taip pat supjaustėme ploną faneros gabalą kaip mūsų LED matricos pagrindą pagal anksčiau apskaičiuotus dydžius.

Pastaba: atsiprašau, kad trūksta žingsnis po žingsnio proceso. Mes neužfiksavome žingsnių iki galo ir kol supratome, kad reikia dokumentuoti žingsnius, korpusas jau buvo padarytas. Diagrama taip pat nėra galutiniai matmenys.

4 žingsnis: padarykite LED matricą

LED matricos kūrimas
LED matricos kūrimas
LED matricos kūrimas
LED matricos kūrimas

Naudodami ploną gabalėlį, kurį iškirpėme anksčiau, pirmiausia pažymime kiekvieno šviesos diodo padėtį, nubrėždami kvadratą pagal mūsų putų struktūrą ir kvadrato viduryje nubrėždami kryžių kaip vietą, kur turėtume klijuoti šviesos diodą. Tada kiekvienoje šviesos diodo pusėje taip pat išgręžiame 3 mažas skyles, kad laidai praeitų, ir prilituokite juos prie kiekvieno šviesos diodo.

Mes sujungiame kiekvieną šviesos diodų eilutę pagal jų duomenų įvesties ir duomenų išvesties kaiščius ir lituojame kiekvieną GND ir VCC prie bendro laido. Pagrindinis duomenų įvedimas sugeneruos kiekvienos eilutės šviesos modelius, ir mes prijungėme jį prie mikrovaldiklio/FPGA kištuko. Taip pat galite lituoti paskutinius vienos eilutės duomenis į kitos eilutės pirmaujančius duomenis. „Ws2812b“šviesos diodas veikia taip, kad kiekviename šviesos diode yra IC, kuri paims reikiamus duomenis iš laido, o likusią dalį perduos grandine. Šviesos diodą grindėme kitu fantastišku instrukciniu (iš tikrųjų mes jį tiksliai nukopijavome! XD)

Čia taip pat norėtume pabrėžti minkštųjų laidų naudojimo svarbą. Jei naudojate standžius, kietus laidus pagrindiniam „Data In“kaiščiui, kas nutinka kiekvieną kartą, kai tempiate laidą, jis gali ištraukti vario paminkštinimą jūsų „Ws2812b“, kuris jį sunaikins. Šiame projekte, prieš pereidami prie minkštųjų laidų, iš viso sunaikinome 40 šviesos diodų, tai yra 1/3 mūsų projektui reikalingų šviesos diodų.

Instrukcija:

5 veiksmas: žaidimo kodų rašymas ir aparatūros derinimas

Žaidimo kodų rašymas ir derinimo įranga
Žaidimo kodų rašymas ir derinimo įranga
Žaidimo kodų rašymas ir derinimo įranga
Žaidimo kodų rašymas ir derinimo įranga
Žaidimo kodų rašymas ir derinimo įranga
Žaidimo kodų rašymas ir derinimo įranga

„Mojo“veikia naudojant „Lucid HDL“, kuri nėra pati populiariausia kalba. „Lucid“nerandame jokių „Ws2812b“LED bibliotekų, todėl rašėme savo biblioteką, o tai yra labai įdomi patirtis. Norėdami tai padaryti, pirmiausia išanalizavome signalą, kuris perduodamas naudojant „Arduino“„FastLED“biblioteką, ir parašėme kodus, kad tai pakartotume. Čia yra aparatūros derinimo triukas, osciloskopas yra labai, labai naudingas analizuojant signalus, ar tai būtų jūsų paties signalo, kuriuo nesate tikri, derinimas, ar kitų signalų tikrinimas ir kopijavimas.

Parašę Ws2812b biblioteką, pereiname prie žaidimo kodavimo, naudojome „Bit shift“funkcijas, norėdami perkelti kiekvieną bloką į kairę ir į dešinę, ir naudojome „Bitwise AND“į „AND“kiekvienos eilutės kvadratus į ankstesnę eilutę. Taip pat galite galvoti apie tai įgyvendinti „Arduino“, o tai neturėtų būti taip sunku. Net pramogaudami užkodavome žaidimų ekranus!

Mūsų žaidimas turėjo 2 lygius, tai yra matomas krovimo žaidimas (žalias) ir antrojo lygio nematomas krovimo žaidimas (mėlynas).

Net po to, kai turėjome darbo kodus ir veikiančią LED matricą, kartais vis tiek susiduriame su tokiomis problemomis kaip lemputės mirksi arba lemputės užsidega, kai to neturėtų. Paprastai problema kyla dėl netinkamo įžeminimo, maitinimo šaltinio lygio ar trukdžių. Čia jums reikės kitų aparatūros derinimo įrankių, pvz., Kintamo maitinimo šaltinio, kad patikrintumėte, ar „Mojo“/„Arduino“maitinimo šaltinis yra pakankamas ar per didelis. Mano patirtis rodo, kad „Ws2812b“turi gana platų darbinių įtampų diapazoną nuo 2,8 iki 5 V. Čia aš turiu vaizdo įrašą, kuriame parodyta, kad lemputės išprotėja, kai padidinu galią.

Tačiau tolesnis patikrinimas parodė, kad turėjome netinkamą lydmetalį, dar kartą juos litavę, mūsų problema buvo išspręsta. Taip pat gali kilti trikdžių ar kryžminio kalbėjimo problema, tačiau, laimei, mes niekada su jais nesusidūrėme.

„Github“kodai:

„Arduino Bitwise Shift“:

„Arduino Bitwise“IR:

6 žingsnis: viską sudėkite

Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti

Jūs turite korpusą ir LED matricą. Dabar atėjo laikas viską sujungti. Pirmiausia dedame putas ant priekio ir LED matricą už jos ir sureguliuojame padėtį. Kadangi putos turi labai didelę trintį, jos buvo tiesiog sumontuotos trinties metu, kol LED matrica yra karštai klijuota. Po to mes pastatėme ekraną priešais tinklelį. Tada prijungėme kiekvienos eilutės kaištį prie mikrovaldiklio ir pradėjome žaisti!: D

Vienas dalykas, kuris man patinka šiame projekte, yra jo lankstumas, visada galite perprogramuoti mikrovaldiklį, kad jis taptų kito žaidimo dalimi, ir išbandyti kažką, pavyzdžiui, kurti animaciją ar reakcijos žaidimą. Tikimės, kad jums patiks tai padaryti ir išmoksite ką nors padaryti. GgEz!

Rekomenduojamas: