Innholdsfortegnelse:

Stackers Arcade Game: 6 trinn (med bilder)
Stackers Arcade Game: 6 trinn (med bilder)

Video: Stackers Arcade Game: 6 trinn (med bilder)

Video: Stackers Arcade Game: 6 trinn (med bilder)
Video: Тест каравана в -25° . Ночёвка зимой. Как не замёрзнуть? 2024, November
Anonim
Stackers Arcade Game
Stackers Arcade Game

Hei folkens, i dag vil jeg dele med dere dette fantastiske arkadespillet som dere kan lage med en haug Ws2812b lysdioder og en mikrokontroller/FPGA. Behold Stack Overflow - vår maskinvareimplementering av et klassisk arkadespill. Det som begynte som et skoleprosjekt ble raskt et kjærlighetsarbeid da vi begynte å bruke mer og mer tid på å utvikle spillet vårt og lære mer av det (og neglisjere studiene våre i prosessen xD). Til slutt ble spillet vårt så godt bygget og godt mottatt av skolen vår at det ble inndratt (som demomateriale for neste gruppe elever). Vel, vi kan alltid bygge en andre. La oss komme i gang!

Online versjon av spillet:

Trinn 1: Hva trenger du?

Hva trenger du?
Hva trenger du?
Hva trenger du?
Hva trenger du?
Hva trenger du?
Hva trenger du?
Hva trenger du?
Hva trenger du?

Materialer:

1. en mikrokontroller/mikrodatamaskin/FPGA - FPGA brukes til å implementere logikken i spillet vårt. Velg brettet ditt, for vårt prosjekt må vi bruke Mojo FPGA -brettet. For de uinnvidde er det en type brett som bruker maskinvare for å implementere funksjonene i stedet for koder. Derfor vil jeg si at det er ganske lavt og helt annerledes enn om du bruker Arduino eller Pi. Hvis du bruker andre tavler, må du skrive din egen kode, men dette spillet er ganske enkelt å kode og hei! Nå kan du lære å kode også!

2. Ws2812b lysdioder - Her bruker vi lysdiodene til å konstruere skjermen for spillet vårt. Kan ikke være produsent hvis du ikke har rørt Ws2812b før xD. Det er enkelt adresserbart, noe som betyr at du kan kutte av enkelt -LED -er og lime dem inn i en hvilken som helst formasjon du liker. Og det er RGB som betyr at du kan sende ut hvilken som helst farge du liker. Videre er FastLED - Arduino -biblioteket for å kontrollere Ws2812b veldig godt utviklet. Jeg vil anbefale folk å bruke Arduino i stedet for FPGA hvis du ikke har en. Du kan kjøpe lysdiodene fra Taobao/Amazon, men vi kjøpte våre fra Sim Lim -tårnet i Singapore.

3. Tre-For det ytre foringsrøret brukte vi 1 cm tykk kryssfiner og for LED-matrisen brukte vi 0,3 cm tykk kryssfiner. Vi fant vårt tilbud av skrapvirke fra skolens flotte laboratorium.

4. Lysdiffuserende akryl - For skjermen vår prøvde vi forskjellige typer akryl, og vi fant denne frostede akrylen kalt PL -422 som er veldig bra for å spre lys. Hvis du ikke finner den eksakte modellen, kan du prøve å se etter frostet akryl. Vi kjøpte vårt på Dama Plastics i Singapore.

5. Skumplate - For å skille hver enkelt lyspiksel, trengte vi en rutenettstruktur, og dette skummet er det ideelle materialet for å gjøre det. Vi kjøpte 0,5 cm tykt skumbrett i skolebokhandelen vår.

6. Stor rød knapp - Ok, det er ikke nødvendig for oss å ha en så stor rød knapp, men det er alltid godt å ha en knapp for folk å smelle! xD Vi kjøpte den på Sim Lim tower i Singapore.

Verktøy:

1. Tre lim

2. Loddejern

3. Lodding

4. Ledninger. Det er best hvis du har myke ledninger sammenlignet med de stivere. Og enkelt kjerne sammenlignet med multicore.

5. Wire stripper

6. Wire cutter

7. Bor med 1 mm bor

8. Rullesag

9. Båndsag

Feilsøking:

1. Variabel strømforsyningsenhet

2. Oscilloskop

Trinn 2: Rask prototyping

Hurtig prototyping
Hurtig prototyping
Hurtig prototyping
Hurtig prototyping
Hurtig prototyping
Hurtig prototyping
Hurtig prototyping
Hurtig prototyping

For prosjektet vårt brukte vi rask prototyping før vi bygde LED -matrisen og programmerte spillet vårt. Grunnen til at vi gjør det er at vi ikke vil bygge LED -matrisen bare for å innse at kodene våre ikke fungerer, eller at spilllogikken vår er feil.

På maskinvaresiden, på det første trinnet testet vi nettopp logikken vår på å skifte lysmønstre på vår egen enkle LED -matrise. Når vi testet at logikken fungerer bra, gikk vi ut for å kutte ut strimler med 5 Ws2812b lysdioder bare for å teste spilllogikken vår med forskjellige rader. Når det løser seg, fortsetter vi med å lage LED -matrisen i full skala.

Vi testet også ut forskjellige akrylprøver med LED-en før vi tok til takke med PL-422 som den beste lysdiffusoren. Og for separatorstrukturen testet vi også forskjellige høyder for at LED -en skulle diffundere fullt ut. Til slutt innså vi 3 cm*3 cm firkant med 4 cm høyde for å være best for diffusjon. Basert på denne optimale størrelsen bestemte vi oss også for størrelsen på kryssfiner som trengs for en 5 x 11 LED -matrise ved å la 0,5 cm mellomrom for skummet mellom rutene.

På programvaresiden prøver vi å være så modulære som mulig - vi tester først om lysdiodene kan lyse før vi fortsetter å legge til skiftfunksjonen, og deretter andre. Resultatene kan være katastrofale hvis du ikke gjør dette. Vi lærte dette på den harde måten da vi prøvde å kode ut hele spillet i en stor del før vi innså at vi ikke kunne feilsøke det. Au!

Trinn 3: Lage kabinettet

Gjør kabinettet
Gjør kabinettet
Gjør kabinettet
Gjør kabinettet
Gjør kabinettet
Gjør kabinettet
Gjør kabinettet
Gjør kabinettet

For foringsrøret vårt, gikk vi med klassiske arkademaskinfølelser og utseende. Først kutter vi litt tynn kryssfiner for raskt å prototype formen, da det er lettere og raskere å kutte tynn kryssfiner og teste. Når vi var fornøyd med våre dimensjoner og form, begynte vi å bruke tykkere kryssfiner for å bygge foringsrøret. Vi brukte en båndsag til å skjære gjennom den tykkere kryssfiner og en rullesag for å skjære gjennom de tynnere. Etter det brukte vi trelim for å lime dem sammen.

På baksiden av kryssfiner ønsket vi lett å få tilgang til elektronikken inni, derfor gjorde vi det til et låsbart stykke som du enkelt kan fjerne når du vil.

For å feste knappen, tegnet vi først en sirkel på størrelse med knappens mikrobryterdiameter (den nederste lange delen av knappen). Vi boret deretter et hull nær kanten og brukte rullesagen til å sage en sirkel gjennom. Så plasserte vi knappen og skrudde den inn.

Vi kuttet også et tynt kryssfiner som grunnlaget for vår LED -matrise i henhold til størrelsene vi beregnet før.

Merk: Jeg beklager mangelen på en trinnvis prosess. Vi dokumenterte ikke trinnene hele veien, og da vi innså at vi må dokumentere trinnene, var foringsrøret allerede gjort. Diagrammet er heller ikke de endelige dimensjonene.

Trinn 4: Lag LED -matrisen

Å lage LED Matrix
Å lage LED Matrix
Å lage LED Matrix
Å lage LED Matrix

Ved å bruke det tynne stykket vi kuttet ut tidligere, merker vi først posisjonen til hver LED ved å tegne en firkant basert på skumstrukturen vår og tegne et kryss i midten av torget som stedet der vi skal holde LED -en. Deretter borer vi også 3 små hull på hver side av LED -en for at ledningene skal komme gjennom og lodde dem til hver LED.

Vi daisy-chain hver rad LED med sine Data In og Data Out pins, og vi lodder hver GND og VCC til en felles ledning. Den ledende Data In vil generere lysmønstrene for hver rad, og vi koblet den til pinout av mikrokontrolleren/FPGA. Du kan også lodde de siste dataene ut av en rad til de ledende dataene i en annen rad. Måten Ws2812b LED fungerer på er at hver LED inneholder en IC som tar de nødvendige dataene fra ledningen og sender resten nedover kjeden. Vi baserte vår LED på en annen fantastisk Instructables (faktisk kopierte vi den nøyaktig! XD)

Her vil vi også understreke viktigheten av å bruke myke ledninger. Hvis du bruker stive, harde ledninger til den ledende Data In -pinnen, er det som skjer hver gang du drar i ledningen, at den kan trekke ut kobberpolstringen på Ws2812b som vil ødelegge den. I dette prosjektet, før vi byttet til myke ledninger, ødela vi totalt 40 lysdioder, som er 1/3 av lysdiodene som trengs for prosjektet vårt.

Instruerbar:

Trinn 5: Skrive spillkoder og feilsøkingsmaskinvare

Skrive spillkoder og feilsøking maskinvare
Skrive spillkoder og feilsøking maskinvare
Skrive spillkoder og feilsøking maskinvare
Skrive spillkoder og feilsøking maskinvare
Skrive spillkoder og feilsøking maskinvare
Skrive spillkoder og feilsøking maskinvare

Mojo kjører på Lucid HDL, som ikke er det mest populære språket der ute. Vi kan ikke finne noen Ws2812b LED -biblioteker i Lucid, og derfor tok vi til å skrive vårt eget bibliotek, noe som er en veldig interessant opplevelse. For å gjøre det, analyserte vi først signalet som forsvinner ved å bruke Arduinos FastLED -bibliotek og skrev koder for å replikere det. Her er et triks med feilsøking av maskinvare, oscilloskopet er veldig, veldig nyttig for å analysere signaler, det være seg feilsøking av ditt eget signal som du ikke er sikker på eller sjekker og kopierer andre signaler.

Etter å ha skrevet biblioteket for Ws2812b, fortsetter vi med å kode for spillet, vi brukte Bit -skiftfunksjonene til å flytte hver blokk til venstre og til høyre og brukte Bitwise OG til OG rutene i hver rad til forrige rad. Du kan også tenke på å implementere det i Arduino, noe som ikke burde være så vanskelig. Vi har til og med kodet spillskjermene for moro skyld!

Spillet vårt hadde 2 nivåer, som er det synlige stablingsspillet (grønt) og det andre nivået usynlig stablingsspill (blått).

Selv etter at vi hadde en arbeidskode og en fungerende LED -matrise, har vi noen ganger fortsatt problemer som lys som blinker eller lyser når de ikke burde. Problemet er vanligvis på grunn av feil jording, strømforsyningsnivå eller forstyrrelser. Det er her du trenger andre maskinvare -feilsøkingsverktøy som variabel strømforsyningsenhet for å sjekke om Mojo/Arduinos strømforsyning er tilstrekkelig eller for høy. Etter min erfaring har Ws2812b et ganske bredt spekter av arbeidsspenninger fra 2,8v - 5v. Her har jeg en video som viser at lysene blir helt gal etter at jeg øker effekten.

Imidlertid avslørte ytterligere kontroll at vi hadde feil loddetinn. Etter å ha loddet dem igjen, var problemet vårt løst. Det kan også være et problem med interferens eller kryssprat, men heldigvis møtte vi aldri noen av dem.

Github-koder:

Arduino Bitwise Shift:

Arduino Bitwise AND:

Trinn 6: Sette alt sammen

Å sette alt sammen
Å sette alt sammen
Å sette alt sammen
Å sette alt sammen
Å sette alt sammen
Å sette alt sammen
Å sette alt sammen
Å sette alt sammen

Du har foringsrøret og LED -matrisen. Det er nå på tide å sette alt sammen. Først plasserer vi skummet på forsiden og LED -matrisen bak det og justerer posisjonen. Fordi skum har veldig høy friksjon, var det bare friksjonsmontert mens LED -matrisen er varmlimt på plass. Etter det plasserte vi skjermen foran rutenettet. Vi koblet deretter hver rads pin til mikrokontrolleren og begynte å spille!: D

En ting jeg liker med dette prosjektet er fleksibiliteten. Du kan alltid omprogrammere mikrokontrolleren for å være en del av et annet spill og prøve noe som å lage animasjoner eller et reaksjonsspill. Håper dere liker å lage dette og lærer noe for å lage dette. GgEz!

Anbefalt: