Cuprins:
- Pasul 1: De ce ai nevoie?
- Pasul 2: Prototipare rapidă
- Pasul 3: Realizarea carcasei
- Pasul 4: Realizarea matricei LED
- Pasul 5: Scrierea codurilor de joc și a hardware-ului de depanare
- Pasul 6: Puneți totul împreună
Video: Joc Arcade Stackers: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Bună băieți, astăzi vreau să vă împărtășesc acest joc arcade uimitor pe care îl puteți face cu o grămadă de LED-uri Ws2812b și un microcontroler / FPGA. Behold Stack Overflow - implementarea hardware a unui joc arcade clasic. Ceea ce a început ca proiect școlar a devenit rapid o muncă a iubirii, pe măsură ce am început să petrecem din ce în ce mai mult timp dezvoltându-ne jocul și învățând mai multe din acesta (și neglijând studiile noastre în procesul xD). În cele din urmă, jocul nostru a fost atât de bine construit și bine primit de școala noastră, încât a fost confiscat (ca material demonstrativ pentru următorul lot de elevi). Ei bine, putem oricând să construim un al doilea. Să începem!
Versiunea online a jocului:
Pasul 1: De ce ai nevoie?
Materiale:
1. un microcontroler / microcomputer / FPGA - FPGA este folosit pentru a implementa logica jocului nostru. Alegeți placa dvs., pentru proiectul nostru, trebuie să folosim placa Mojo FPGA. Pentru cei neinițiați, este un tip de placă care folosește hardware pentru a-și implementa funcțiile, mai degrabă decât codurile. Prin urmare, aș spune că este destul de scăzut și este complet diferit decât dacă folosiți Arduino sau Pi. Dacă utilizați alte plăci, trebuie să scrieți propriul cod, dar acest joc este destul de ușor de codat și hei! Acum puteți învăța și codificarea!
2. LED-uri Ws2812b - Aici folosim LED-urile pentru a construi afișajul pentru jocul nostru. Nu pot fi producător dacă nu ați atins Ws2812b's înainte de xD. Este un singur adresabil, ceea ce înseamnă că puteți tăia LED-urile unice și le puteți lipi în orice formație care vă place. Și RGB înseamnă că puteți emite orice culoare doriți. Mai mult, FastLED - biblioteca Arduino pentru controlul Ws2812b este foarte bine dezvoltată. Aș recomanda oamenilor să folosească Arduino în locul FPGA dacă nu aveți unul. Puteți achiziționa LED-uri de la Taobao / Amazon, dar noi le-am cumpărat de la turnul Sim Lim din Singapore.
3. Lemn - Pentru carcasa exterioară am folosit placaj cu grosimea de 1cm, iar pentru matricea LED am folosit placaj cu grosimea de 0,3cm. Am găsit aprovizionarea cu resturi de lemn de la fabulosul laborator al școlii noastre.
4. Acril difuziv de lumină - Pentru ecranul nostru, am încercat diferite tipuri de acril și am găsit acest acril mat, numit PL-422, care este foarte bun pentru difuzarea luminii. Dacă nu găsiți modelul exact, încercați să căutați acrilice mat. Am cumpărat-o pe a noastră la Dama Plastics din Singapore.
5. Placă de spumă - Pentru a separa fiecare pixel individual de lumină, aveam nevoie de o structură de rețea și această spumă este materialul ideal pentru a face acest lucru. Am cumpărat o placă de spumă de 0,5 cm grosime la librăria noastră școlară.
6. Buton roșu mare - Ok, nu este necesar să avem un buton roșu atât de mare, dar este întotdeauna bine să ai un buton pe care să-l trântești oamenii! xD L-am cumpărat la turnul Sim Lim din Singapore.
Instrumente:
1. Lipici pentru lemn
2. Fier de lipit
3. lipit
4. Firele. Este cel mai bun dacă aveți fire moi în comparație cu cele mai rigide. Și un singur nucleu în comparație cu multicore.
5. Dispozitiv de sârmă
6. Tăietor de sârmă
7. Burghiu cu burghie de 1 mm
8. Ferăstrău cu role
9. Ferăstrău cu bandă
Depanare:
1. Unitate de alimentare variabilă
2. Osciloscop
Pasul 2: Prototipare rapidă
Pentru proiectul nostru, am folosit prototipuri rapide înainte de a ne construi matricea LED și de a ne programa jocul. Motivul pentru care facem acest lucru este că nu vrem să construim matricea LED doar pentru a ne da seama că codurile noastre nu funcționează sau logica noastră de joc este defectă, este într-un fel.
În ceea ce privește hardware-ul, în prima etapă tocmai ne-am testat logica privind schimbarea modelelor de lumină pe propria noastră matrice simplă de LED-uri. Odată ce am testat că logica funcționează bine, am ieșit apoi să decupăm benzi de LED-uri de 5 Ws2812b doar pentru a testa logica noastră de joc cu rânduri diferite. Odată ce acest lucru se va rezolva, vom trece la fabricarea matricei LED la scară completă.
De asemenea, am testat diferite probe de acrilic cu LED-ul înainte de a ne stabili pentru PL-422 ca cel mai bun difuzor de lumină. Și pentru structura separatorului am testat, de asemenea, diferite înălțimi pentru ca LED-ul să se difuzeze complet. La final am realizat 3cm * 3cm pătrat cu 4cm înălțime pentru a fi cel mai bun pentru difuzie. Pe baza acestei dimensiuni optime, am decis, de asemenea, care este dimensiunea placajului necesară pentru o matrice LED de 5 x 11, lăsând un spațiu de 0,5 cm pentru spuma dintre pătrate..
În ceea ce privește software-ul, încercăm să fim cât mai modulari posibil - testăm mai întâi dacă LED-urile pot fi aprinse înainte de a continua să adăugați funcția de schimbare și apoi altele. Rezultatele ar putea fi catastrofale dacă nu faceți acest lucru. Am învățat acest lucru într-un mod dificil, în timp ce am încercat să codificăm întregul joc într-o bucată mare, înainte de a ne da seama că nu putem să-l depanăm. Vai!
Pasul 3: Realizarea carcasei
Pentru carcasa noastră, am mers cu simțurile și aspectul clasic al mașinilor arcade. În primul rând, tăiem niște placaj subțire pentru a prototipa rapid forma, deoarece este mai ușor și mai rapid să tăiem placaj subțire și să testăm. Odată ce am fost mulțumiți de dimensiunile și forma noastră, am început să folosim placaj mai gros pentru a construi carcasa. Am folosit un ferăstrău cu bandă pentru a tăia placajul mai gros și un ferăstrău cu role pentru a tăia cele mai subțiri. După aceea, am folosit lipici pentru lemn pentru a-i lipi împreună.
Pentru partea din spate a placajului, am vrut să accesăm cu ușurință elementele electronice din interior, de aceea am transformat-o într-o piesă de blocare pe care o puteți scoate cu ușurință oricând doriți.
Pentru a atașa butonul, am desenat mai întâi un cerc de mărimea diametrului microswitchului butonului (partea de jos lungă a butonului). Apoi am forat o gaură lângă margine și am folosit ferăstrăul cu role pentru a vedea un cerc. Apoi am așezat butonul și l-am înșurubat.
De asemenea, tăiem o bucată subțire de placaj ca bază a matricei noastre LED în funcție de dimensiunile pe care le-am calculat anterior.
Notă: îmi cer scuze pentru lipsa procesului pas cu pas. Nu am documentat pașii până la capăt și până când ne-am dat seama că trebuie să documentăm pașii, carcasa era deja realizată. Diagrama nu este, de asemenea, dimensiunile finale.
Pasul 4: Realizarea matricei LED
Folosind piesa subțire pe care o decupăm mai devreme, marcăm mai întâi poziția fiecărui LED trasând un pătrat pe baza structurii noastre de spumă și desenând o cruce în mijlocul pătratului ca locul unde ar trebui să lipim LED-ul. Apoi, găurim și 3 găuri mici pe fiecare parte a LED-ului pentru ca firele să treacă și să le lipim pe fiecare LED.
Înlănțuim fiecare rând de LED-uri prin pinii lor de intrare și ieșire a datelor și lipim fiecare GND și VCC pe un fir comun. Data In principal va genera modele de lumină pentru fiecare rând și l-am conectat la pinout-ul microcontrolerului / FPGA. Puteți, de asemenea, să lipiți ultimele date dintr-un rând la datele principale de intrare din alt rând. Modul în care funcționează LED-ul Ws2812b este că fiecare LED conține un IC care va prelua datele necesare de pe fir și va trece restul în lanț. Ne-am bazat LED-ul pe un alt instructabil fantastic (De fapt, l-am copiat exact! XD)
Aici am dori să subliniem și importanța utilizării firelor moi. Dacă utilizați fire rigide, dure pentru pinul de intrare de date, ceea ce se întâmplă este că de fiecare dată când trageți firul, acesta ar putea scoate căptușeala de cupru de pe Ws2812b, care îl va distruge. În acest proiect, înainte de a ne transforma în fire moi, am distrus un total de 40 de LED-uri, ceea ce reprezintă 1/3 din LED-urile necesare proiectului nostru.
Instructabil:
Pasul 5: Scrierea codurilor de joc și a hardware-ului de depanare
Mojo rulează pe Lucid HDL, care nu este cel mai popular limbaj de acolo. Nu putem găsi nicio bibliotecă LED Ws2812b în Lucid, prin urmare am recurs la scrierea propriei noastre biblioteci, ceea ce este o experiență foarte interesantă. Pentru a face acest lucru, am analizat mai întâi semnalul care este transmis prin utilizarea bibliotecii FastLED Arduino și am scris coduri pentru a reproduce acest lucru. Iată un truc de depanare hardware, osciloscopul este foarte, foarte util pentru a analiza semnale, fie că este vorba de depanarea propriului semnal de care nu sunteți sigur sau de verificarea și copierea altor semnale.
După ce am scris biblioteca pentru Ws2812b, apoi trecem la codul jocului, am folosit funcțiile Bit shift pentru a muta fiecare bloc spre stânga și spre dreapta și am folosit Bitwise ȘI ȘI pătratele fiecărui rând pe rândul anterior. De asemenea, vă puteți gândi să implementați acest lucru în Arduino, ceea ce nu ar trebui să fie atât de greu. Am codat chiar și ecrane de joc pentru distracție!
Jocul nostru avea 2 nivele, care este jocul vizibil de stivuire (verde) și al doilea nivel invizibil joc de stivuire (albastru).
Chiar și după ce am avut coduri de lucru și matrice de LED-uri de lucru, uneori ne confruntăm cu probleme precum luminile care pâlpâie sau luminile care se aprind atunci când nu ar trebui. De obicei, problema se datorează împământării necorespunzătoare, nivelului sursei de alimentare sau interferențelor. Aici veți avea nevoie de alte instrumente de depanare hardware, cum ar fi unitatea de alimentare variabilă pentru a verifica dacă sursa de alimentare a Mojo / Arduino este suficientă sau prea mare. Din experiența mea, Ws2812b are o gamă destul de largă de tensiuni de lucru de la 2.8v la 5v. Aici am un videoclip care arată luminile care înnebunesc după ce măresc puterea.
Cu toate acestea, verificarea ulterioară a arătat că avem o lipire necorespunzătoare, după ce le-am re-lipit încă o dată, problema noastră a fost rezolvată. Ar putea exista, de asemenea, o problemă cu interferențele sau vorbirea încrucișată, dar, din fericire, nu ne-am confruntat niciodată cu niciuna dintre ele.
Coduri Github:
Arduino Bitwise Shift:
Arduino Bitwise ȘI:
Pasul 6: Puneți totul împreună
Aveți carcasa și matricea LED. Acum este timpul să punem totul la punct. Mai întâi așezăm spuma pe față și matricea LED în spatele ei și ajustăm poziția. Deoarece spuma are o frecare foarte mare, aceasta a fost montată doar pe frecare, în timp ce matricea LED este lipită la cald în loc. După aceea am așezat ecranul în fața grilei. Apoi am conectat pinul fiecărui rând la microcontroler și am început să ne jucăm!: D
Un lucru care îmi place la acest proiect este flexibilitatea sa, puteți oricând să reprogramați microcontrolerul pentru a face parte dintr-un alt joc și să încercați ceva cum ar fi realizarea de animație sau un joc de reacție. Sper că vă place să faceți acest lucru și să învățați ceva pentru a face acest lucru. GgEz!
Recomandat:
POING! - Joc Arcade Arduino !: 3 pași
POING! - Joc Arcade Arduino !: Vom construi un joc arcade stil PONG care utilizează piese din „The Most Complete Starter Kit UNO R3 Project” kit de la Elegoo Inc. Divulgare completă - Majoritatea pieselor furnizate pentru acest instructabil au fost furnizate autorului de către Elegoo
Joc Simon - Joc distractiv !: 5 pași
Joc Simon - Joc distractiv !: Referință: Aici După un weekend lung, trebuie să fii cu adevărat greu să îndeplinești toate sarcinile și munca de care ești responsabil. Este timpul să ne antrenăm creierul, nu-i așa? Pe lângă acele jocuri plictisitoare și fără sens, există și un joc numit Simon Game
Controler de joc DIY bazat pe Arduino - Controler de joc Arduino PS2 - Jucând Tekken cu DIY Arduino Gamepad: 7 pași
Controler de joc DIY bazat pe Arduino | Controler de joc Arduino PS2 | Jucând Tekken cu DIY Arduino Gamepad: Bună, băieți, jocul este întotdeauna distractiv, dar jocul cu propriul controler personalizat DIY este mai distractiv
Consola de joc Arduino Pocket + A-Maze - Joc Maze: 6 pași (cu imagini)
Arduino Pocket Game Console + A-Maze - Maze Game: Bine ați venit la primul meu instructable! Proiectul pe care vreau să îl împărtășesc astăzi este jocul de labirint Arduino, care a devenit o consolă de buzunar la fel de capabilă ca Arduboy și consolele similare bazate pe Arduino. Poate fi intermitent cu jocurile mele (sau ale dvs.) viitoare datorită expo
Joc arcade cu laser LED Arduino: 3 pași (cu imagini)
Arduino LED Laser Arcade Game: În acest instructiv, voi demonstra cum să faci un Laser Arcade Game folosind LED-uri și senzori de lumină. Codul este inclus și nu aveți nevoie de multe piese pentru al construi. Nu vă voi spune cum construiesc cazul, va trebui să faceți asta chiar voi! T