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: Я открываю бандл Dominaria United Edition, карты Magic The Gathering 2024, Srpanj
Anonim
Slagači Arkadna igra
Slagači Arkadna igra

Bok dečki, danas želim podijeliti s vama ovu nevjerojatnu 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 započ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 tom procesu xD). Na kraju je naša škola bila tako dobro izgrađena i prihvaćena u našoj školi da je oduzeta (kao demo materijal za sljedeću grupu učenika). Pa, uvijek možemo izgraditi drugu. Započnimo!

Mrežna verzija igre:

Korak 1: Što vam treba?

Što trebaš?
Što trebaš?
Što trebaš?
Što trebaš?
Što trebaš?
Što trebaš?
Što trebaš?
Što 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 njegova prilično niska razina i potpuno drugačija 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 zaslona za našu igru. Ne možete biti proizvođač ako niste dodirnuli Ws2812b prije xD -a. Jedinstvena je 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 knjižnica za kontrolu Ws2812b vrlo je dobro razvijena. Preporučio bih ljudima da koriste Arduino umjesto FPGA -e ako ga nemate. LED diode možete kupiti u Taobau/Amazonu, 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 drva iz laboratorija naše škole.

4. Akril za raspršivanje svjetla - Za naš smo ekran isprobali različite vrste akrila i pronašli 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 matirane akrile. Naše smo kupili u Dama Plastics u Singapuru.

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

6. Veliko crveno dugme - U redu, nije nužno da imamo tako veliki crveni gumb, ali uvijek je dobro imati gumb za ljude koji mogu udariti! 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 jednojezgrena u usporedbi s višejezgrenom.

5. Skidač žice

6. Rezač žice

7. Bušite bušilicama promjera 1 mm

8. Pila za pomicanje

9. Tračna pila

Otklanjanje pogrešaka:

1. Varijabilna jedinica za napajanje

2. Osciloskop

Korak 2: Brza izrada prototipa

Brza izrada prototipova
Brza izrada prototipova
Brza izrada prototipova
Brza izrada prototipova
Brza izrada prototipova
Brza izrada prototipova
Brza izrada prototipova
Brza izrada prototipova

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 rade ili je logika igre pogrešna.

Što se tiče hardvera, u prvoj smo fazi upravo testirali svoju logiku prebacivanja svjetlosnih uzoraka na našu jednostavnu LED matricu. Nakon što smo provjerili funkcionira li logika, izašli smo izrezati trake od 5 LED dioda Ws2812b samo kako bismo testirali logiku igre s različitim redovima. Nakon što 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 također smo odlučili 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.

Što se softvera tiče, trudimo se 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 šifrirati cijelu igru prije nego što smo shvatili da je ne možemo otkloniti. Au!

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, išli smo s klasičnim arkadnim strojem koji izgleda i izgleda. 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. Trakastom pilom smo rezali deblju šperploču, a kružnom pilom za rezanje tanje. 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 jednostavno ukloniti kad god želite.

Za pričvršćivanje gumba prvo smo nacrtali krug veličine promjera mikroprekidača gumba (donji dugački dio gumba). Zatim smo izbušili rupu blizu ruba i pomoću zavojne pile izrezali krug. Zatim smo postavili gumb 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: Ispričavam se zbog nedostatka postupnog postupka. Nismo dokumentirali korake do kraja i kad smo shvatili da moramo dokumentirati korake, kućište je već bilo gotovo. 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 izrezali ranije, prvo označavamo položaj svake LED diode crtanjem kvadrata na temelju naše strukture pjene i iscrtavanjem križa na sredini kvadrata kao mjesto na koje bismo trebali zalijepiti LED. Zatim također izbušimo 3 male rupe sa svake strane LED diode kako bi žice mogle proći i lemimo ih na svaku LED.

Svaki niz LED dioda lancem povezujemo njihovim pinovima za ulaz podataka i izlaz za izlaz i lemimo svaki GND i VCC na zajedničku žicu. Vodeći Data In generirat će svjetlosne uzorke za svaki red, a mi smo ga povezali s pinout mikrokontrolera/FPGA. Također možete lemiti posljednji podatak 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 temeljili na još jednom fantastičnom Instructablesu (Zapravo, točno smo ga kopirali! 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 pogrešaka na hardveru

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

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

Nakon što smo napisali knjižnicu za Ws2812b, zatim nastavljamo s kodiranjem igre, koristili smo funkcije pomaka bitova za pomicanje svakog bloka ulijevo i udesno te smo koristili po razmaku I do i kvadrate svakog reda u prethodni redak. Također možete razmišljati o tome da to implementirate u Arduino, što ne bi trebalo biti tako teško. Čak smo kodirali ekrane igara radi zabave!

Naša je igra imala 2 razine, a to je igra s vidljivim slaganjem (zelena) i druga razina nevidljiva igra slaganja (plava).

Čak i nakon što smo imali radne 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, razine napajanja ili smetnji. Ovdje će vam biti potrebni drugi hardverski alati za uklanjanje pogrešaka, poput varijabilne jedinice za napajanje kako biste provjerili je li napajanje Mojo/Arduino 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, daljnja provjera otkrila je da smo imali neko nepravilno lemljenje, nakon što smo ih ponovno lemili, naš problem je riješen. Također bi mogao postojati problem s smetnjama ili unakrsnim razgovorima, ali srećom, nikada se nismo suočili ni s jednim od njih.

Github kodovi:

Arduino Bitwise Shift:

Arduino Bitwise I:

Korak 6: Sve spojite

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 zaslon 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 ovo. GgEz!

Preporučeni: