Sadržaj:

Slagači Arkadna igra: 6 koraka (sa slikama)
Slagači Arkadna igra: 6 koraka (sa slikama)

Video: Slagači Arkadna igra: 6 koraka (sa slikama)

Video: Slagači Arkadna igra: 6 koraka (sa slikama)
Video: Гоночная браузерная игра высочайшего качества 🏎🚗🚙🚘 - Burnin' Rubber 5 XS Race 1-6 GamePlay 🎮📱 🇷🇺 2024, Decembar
Anonim
Slagači Arkadna igra
Slagači Arkadna igra

Zdravo momci, danas želim podijeliti s vama ovu nevjerovatnu arkadnu igru koju možete napraviti s hrpom Ws2812b LED dioda i mikrokontrolerom/FPGA. Behold Stack Overflow - naša hardverska implementacija klasične arkadne igre. Ono što je počelo kao školski projekt brzo je postalo rad ljubavi jer smo počeli trošiti sve više vremena na razvoj naše igre i učenje više od nje (i zanemarivanje studija u procesu xD). Na kraju, naša je igra bila toliko dobro izgrađena i prihvaćena u našoj školi da je konfiscirana (kao demo materijal za sljedeću grupu učenika). Pa, uvijek možemo izgraditi drugu. Hajde da počnemo!

Mrežna verzija igre:

Korak 1: Šta vam treba?

Šta ti treba?
Šta ti treba?
Šta ti treba?
Šta ti treba?
Šta ti treba?
Šta ti treba?
Šta ti treba?
Šta ti treba?

Materijali:

1. Mikrokontroler/Mikroračunalo/FPGA - FPGA se koristi za implementaciju logike naše igre. Odaberite svoju ploču, za naš projekt moramo koristiti Mojo FPGA ploču. Za neupućene, to je vrsta ploče koja koristi hardver za implementaciju svojih funkcija, a ne kodove. Stoga bih rekao da je prilično nizak i potpuno drugačiji nego ako koristite Arduino ili Pi. Ako koristite druge ploče, morate napisati vlastiti kod, ali ovu igru je prilično lako kodirati i hej! Sada možete naučiti i kodiranje!

2. LED diode Ws2812b - Ovdje koristimo LED diode za izradu ekrana za našu igru. Ne možete biti proizvođač ako niste dodirnuli Ws2812b prije xD -a. To je jedna adresa koja znači da možete odrezati pojedinačne LED diode i zalijepiti ih u bilo koju formaciju koja vam se sviđa. RGB znači da možete ispisati bilo koju boju koja vam se sviđa. Nadalje, FastLED - Arduino biblioteka za kontrolu Ws2812b je vrlo dobro razvijena. Preporučio bih ljudima da koriste Arduino umjesto FPGA -e ako ga nemate. LED diode možete kupiti od Taobao/Amazon, ali mi smo naše kupili od Sim Lim tornja u Singapuru.

3. Drvo-Za vanjsko kućište koristili smo šperploču debljine 1 cm, a za LED matricu šperploču debljine 0,3 cm. Našli smo zalihe starog drveta iz laboratorije naše škole.

4. Akril za raspršivanje svjetla - Za naš ekran isprobali smo različite vrste akrila i otkrili smo ovaj matirani akril zvan PL -422 koji je zaista dobar za raspršivanje svjetla. Ako ne možete pronaći točan model, pokušajte potražiti mat akril. Naše smo kupili u Dama Plastics u Singapuru.

5. Pjenasta ploča - Da bismo odvojili svaki pojedinačni piksel svjetlosti, bila nam je potrebna mrežasta struktura, a ova pjena je idealan materijal za to. U školskoj knjižari kupili smo pjenastu ploču debljine 0,5 cm.

6. Veliko crveno dugme - Ok, nije potrebno da imamo tako veliko crveno dugme, ali uvijek je dobro imati dugme za ljude da zalupe! xD Kupili smo ga u kuli Sim Lim u Singapuru.

Alati:

1. Ljepilo za drvo

2. Lemilica

3. Lemljenje

4. Žice. Najbolje je ako imate meke žice u odnosu na čvršće. I jednojezgreno u poređenju sa višejezgrenim.

5. Skidač žice

6. Rezač žice

7. Bušite bušilicama promjera 1 mm

8. Pila za pomicanje

9. Tračna pila

Otklanjanje grešaka:

1. Varijabilna jedinica za napajanje

2. Osciloskop

Korak 2: Brzo prototipiranje

Rapid Prototyping
Rapid Prototyping
Rapid Prototyping
Rapid Prototyping
Rapid Prototyping
Rapid Prototyping
Rapid Prototyping
Rapid Prototyping

Za naš projekt upotrijebili smo brzu izradu prototipova prije nego što smo izgradili LED matricu i programirali igru. Razlog za to je što ne želimo izgraditi LED matricu samo da bismo shvatili da naši kodovi ne funkcioniraju ili je logika igre pogrešna.

Što se tiče hardvera, u prvoj fazi smo samo testirali svoju logiku prebacivanja svjetlosnih uzoraka na našu jednostavnu LED matricu. Nakon što smo testirali da logika dobro funkcionira, izašli smo izrezati trake od 5 LED dioda Ws2812b samo da bismo testirali logiku igre s različitim redovima. Kada to uspije, nastavljamo s proizvodnjom LED matrice u punom opsegu.

Također smo testirali različite uzorke akrila sa LED prije nego što smo se odlučili za PL-422 kao najbolji difuzor svjetlosti. Za strukturu separatora također smo testirali različite visine kako bi se LED potpuno raspršila. Na kraju smo shvatili da je kvadrat 3 cm*3 cm s visinom od 4 cm najbolji za širenje. Na temelju ove optimalne veličine odlučili smo i koja je veličina šperploče potrebna za LED matricu 5 x 11 ostavljajući razmak od 0,5 cm za pjenu između kvadrata.

Sa softverske strane, pokušavamo biti što modularniji - prvo testiramo mogu li se LED diode upaliti prije nego što dodamo funkciju pomaka, a zatim i druge. Rezultati bi mogli biti katastrofalni ako to ne učinite. To smo naučili na teži način pokušavajući kodirati cijelu igru velikim dijelom prije nego što smo shvatili da to ne možemo otkloniti. Ouch!

Korak 3: Izrada kućišta

Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta

Za naše kućište, otišli smo sa klasičnim arkadnim mašinama koje izgledaju i izgledaju. Prvo smo izrezali tanku šperploču kako bismo brzo prototipirali oblik jer je lakše i brže rezati tanku šperploču i testirati je. Kad smo bili zadovoljni svojim dimenzijama i oblikom, počeli smo koristiti deblju šperploču za izradu kućišta. Koristili smo trakastu pilu za rezanje deblje šperploče, a za rezanje tanjih špaleta. Nakon toga smo ih zalijepili ljepilom za drvo.

Za stražnju stranu šperploče htjeli smo lako pristupiti elektronici iznutra, pa smo je pretvorili u zaključani komad koji možete lako ukloniti kad god želite.

Da bismo pričvrstili dugme, prvo smo nacrtali krug veličine promjera mikroprekidača dugmeta (donji dio dugmeta). Zatim smo izbušili rupu blizu ruba i pomoću spiralne pile izrezali krug. Zatim smo postavili dugme i uvrnuli ga.

Također smo izrezali tanki komad šperploče kao osnovu naše LED matrice prema veličinama koje smo prethodno izračunali.

Napomena: Izvinjavam se zbog nedostatka procesa korak po korak. Nismo dokumentirali korake do kraja i kad smo shvatili da moramo dokumentirati korake, omotač je već bio gotov. Dijagram također nije konačna dimenzija.

Korak 4: Izrada LED matrice

Izrada LED matrice
Izrada LED matrice
Izrada LED matrice
Izrada LED matrice

Koristeći tanki komad koji smo ranije izrezali, prvo označavamo položaj svake LED diode crtanjem kvadrata na osnovu naše strukture pjene i iscrtavanjem križa na sredini kvadrata kao mjesto na koje trebamo zalijepiti LED. Zatim također izbušimo 3 male rupe sa svake strane LED diode za prolazak žica i lemimo ih na svaku LED diodu.

Svaki niz LED dioda povezujemo njihovim pinovima za ulaz podataka i izlaz za podatke i lemimo svaki GND i VCC na zajedničku žicu. Vodeći Data In će generirati svjetlosne uzorke za svaki red, a mi smo ga povezali sa pinout -om mikrokontrolera/FPGA. Također možete lemiti posljednje podatke iz jednog reda u vodeći podatak iz drugog reda. Način na koji Ws2812b LED radi je da svaka LED dioda sadrži IC koji će uzeti potrebne podatke iz žice, a ostatak prenijeti niz lanac. LED smo zasnovali na još jednoj fantastičnoj instrukciji (u stvari, kopirali smo je tačno! XD)

Ovdje bismo također željeli naglasiti važnost korištenja mekih žica. Ako koristite čvrste, tvrde žice za vodeći pin za prijenos podataka, ono što se događa je svaki put kada povučete žicu, ona bi mogla izvući bakrenu podlogu na vašem Ws2812b koja će je uništiti. U ovom projektu, prije nego što smo prešli na meke žice, uništili smo ukupno 40 LED dioda, što je 1/3 LED dioda potrebnih za naš projekt.

Upute:

Korak 5: Pisanje kodova igara i otklanjanje grešaka na hardveru

Pisanje kodova igara i otklanjanje grešaka na hardveru
Pisanje kodova igara i otklanjanje grešaka na hardveru
Pisanje kodova igara i otklanjanje grešaka na hardveru
Pisanje kodova igara i otklanjanje grešaka na hardveru
Pisanje kodova igara i otklanjanje grešaka na hardveru
Pisanje kodova igara i otklanjanje grešaka na hardveru

Mojo radi na Lucid HDL -u, koji nije najpopularniji jezik. U Lucidu ne možemo pronaći LED biblioteke Ws2812b, pa smo pribjegli pisanju vlastite biblioteke, što je vrlo zanimljivo iskustvo. Da bismo to učinili, prvo smo analizirali signal koji se odašilje pomoću Arduinove FastLED biblioteke i napisali kodove da to repliciramo. Evo trika hardverskog otklanjanja grešaka, osciloskop je vrlo, vrlo koristan za analizu signala, bilo da se radi o otklanjanju grešaka u vašem vlastitom signalu za koji niste sigurni ili provjeri i kopiranju drugih signala.

Nakon pisanja biblioteke za Ws2812b, zatim nastavljamo sa kodiranjem igre, koristili smo funkcije Bit shift za pomicanje svakog bloka ulijevo i udesno te smo koristili Bitwise AND do AND kvadrate svakog reda u prethodni red. Možete razmišljati i o tome da to implementirate u Arduino, što ne bi trebalo biti tako teško. Čak smo kodirali ekrane za igru radi zabave!

Naša igra je imala 2 nivoa, a to je igra vidljivog slaganja (zelena) i druga razina nevidljiva igra slaganja (plava).

Čak i nakon što smo imali ispravne kodove i radnu LED matricu, ponekad se i dalje suočavamo s problemima poput treperenja svjetla ili svijetljenja kad ne bi trebali. Problem je obično zbog nepravilnog uzemljenja, nivoa napajanja ili smetnji. Ovdje će vam trebati drugi hardverski alati za otklanjanje grešaka, poput varijabilne jedinice za napajanje kako biste provjerili je li Mojo/Arduino napajanje dovoljno ili previsoko. Prema mom iskustvu, Ws2812b ima prilično širok raspon radnih napona od 2,8v do 5v. Ovdje imam video koji prikazuje kako svjetla luduju nakon što pojačam snagu.

Međutim, dodatnom provjerom otkriveno je da smo imali neko nepravilno lemljenje, nakon što smo ih ponovno lemili, naš problem je riješen. Takođe bi mogao postojati problem sa smetnjama ili unakrsnim razgovorima, ali srećom, nikada se nismo suočili s bilo kojim od njih.

Github kodovi:

Arduino Bitwise Shift:

Arduino Bitwise I:

Korak 6: Spajanje svega zajedno

Spajanje svega
Spajanje svega
Spajanje svega
Spajanje svega
Spajanje svega
Spajanje svega
Spajanje svega
Spajanje svega

Imate kućište i LED matricu. Vrijeme je da sve spojimo. Prvo stavljamo pjenu na prednju stranu, a LED matricu iza nje i prilagođavamo položaj. Budući da pjena ima vrlo visoko trenje, samo je ugrađena na trenje dok je LED matrica vruće zalijepljena na mjestu. Nakon toga smo postavili ekran ispred rešetke. Zatim smo priključili pin svakog reda na mikrokontroler i počeli svirati!: D

Jedna stvar koja mi se sviđa kod ovog projekta je njegova fleksibilnost, uvijek možete reprogramirati mikrokontroler da bude dio druge igre i isprobati nešto poput stvaranja animacije ili reakcije. Nadam se da ćete uživati u izradi ovoga i naučiti nešto za pravljenje ovoga. GgEz!

Preporučuje se: