Talaan ng mga Nilalaman:

Stackers Arcade Game: 6 Hakbang (na may Mga Larawan)
Stackers Arcade Game: 6 Hakbang (na may Mga Larawan)

Video: Stackers Arcade Game: 6 Hakbang (na may Mga Larawan)

Video: Stackers Arcade Game: 6 Hakbang (na may Mga Larawan)
Video: IPHONE 6 WIN FROM STACKER! 2024, Nobyembre
Anonim
Stackers Arcade Game
Stackers Arcade Game

Kumusta mga tao, ngayon nais kong ibahagi sa iyo ang kamangha-manghang arcade game na maaari mong gawin sa isang kumpol na Ws2812b LEDs at isang microcontroller / FPGA. Narito ang Stack Overflow - ang aming pagpapatupad ng hardware ng isang klasikong arcade game. Ang nagsimula bilang isang proyekto sa paaralan ay mabilis na naging isang paggawa ng pag-ibig nang magsimula kaming gumugol ng mas maraming oras sa pagbuo ng aming laro at matuto nang higit pa mula rito (at napapabayaan ang aming pag-aaral sa proseso xD). Sa huli, ang aming laro ay napakahusay na binuo at mahusay na tinanggap ng aming paaralan na kinumpiska ito (bilang demo na materyal para sa susunod na pangkat ng mag-aaral). Sa gayon, maaari naming palaging bumuo ng isang pangalawa. Magsimula na tayo!

Online na bersyon ng laro:

Hakbang 1: Ano ang Kailangan Mo?

Ano'ng kailangan mo?
Ano'ng kailangan mo?
Ano'ng kailangan mo?
Ano'ng kailangan mo?
Ano'ng kailangan mo?
Ano'ng kailangan mo?
Ano'ng kailangan mo?
Ano'ng kailangan mo?

Mga Materyales:

1. isang Microcontroller / Microcomputer / FPGA - Ginagamit ang FPGA upang ipatupad ang lohika ng aming laro. Piliin ang iyong board, para sa aming proyekto kinakailangan naming gamitin ang Mojo FPGA board. Para sa hindi nakakaalam, ito ay isang uri ng board na gumagamit ng hardware upang ipatupad ang mga pag-andar nito kaysa sa mga code. Samakatuwid, sasabihin ko ang mababang antas nito at ganap na naiiba kaysa kung gumagamit ka ng Arduino o Pi. Kung gumamit ka ng iba pang mga board, kailangan mong magsulat ng iyong sariling code, ngunit ang larong ito ay medyo madali i-code at hey! Ngayon ay maaari mo ring malaman ang pag-coding!

2. Ws2812b LEDs - Narito ginagamit namin ang mga LED upang maitayo ang display para sa aming laro. Hindi maaaring maging tagagawa kung hindi mo hinawakan ang Ws2812b's bago xD. Ito ay solong addressable kahulugan na maaari mong putulin ang solong LEDs at i-paste ang mga ito sa anumang pagbuo na gusto mo. At ito ay RGB na nangangahulugang maaari kang maglabas ng anumang kulay na gusto mo. Bukod dito, FastLED - ang Arduino library para sa pagkontrol sa Ws2812b ay napakahusay na binuo. Inirerekumenda ko ang mga tao na gamitin ang Arduino kapalit ng FPGA kung wala kang isa. Maaari kang bumili ng mga LED mula sa Taobao / Amazon ngunit binili namin ang sa amin mula sa Sim Lim tower sa Singapore.

3. Kahoy - Para sa panlabas na pambalot na ginamit namin ang 1cm-makapal na playwud at para sa LED matrix ginamit namin ang 0.3cm-makapal na playwud. Natagpuan namin ang aming supply ng scrap kahoy mula sa lab lab ng aming paaralan.

4. Light diffusing Acrylic - Para sa aming screen, sinubukan namin ang iba't ibang mga uri ng acrylic at nakita namin ang nagyelo na acrylic na tinatawag na PL-422 na talagang mabuti para sa pagsabog ng ilaw. Kung hindi mo makita ang eksaktong modelo subukan ang pagtingin sa mga nagyeyelong acrylics. Bumili kami ng sa amin sa Dama Plastics sa Singapore.

5. Foam Board - Upang paghiwalayin ang bawat indibidwal na mga pixel ng ilaw, kailangan namin ng isang istraktura ng grid at ang foam na ito ay ang perpektong materyal na gawin ito. Bumili kami ng 0.5cm-makapal na foam board sa aming bookstore ng paaralan.

6. Malaking Pulang Pula - Ok, hindi kinakailangan para sa amin na magkaroon ng isang malaking pulang pindutan ngunit palaging magandang magkaroon ng isang pindutan para sa mga tao na mag-slam! xD Binili namin ito sa Sim Lim tower sa Singapore.

Mga tool:

1. Pandikit na Kahoy

2. Panghinang na Bakal

3. Solder

4. Mga wire. Pinakamainam kung mayroon kang malambot na mga wire kung ihahambing sa mga mahigpit. At solong core kumpara sa multicore.

5. Wire stripper

6. Pamutol ng wire

7. Mag-drill na may 1mm drill bits

8. Nakita ang scroll

9. Band saw

Pag-debug:

1. Variable Power Supply Unit

2. Oscilloscope

Hakbang 2: Mabilis na Prototyping

Mabilis na Prototyping
Mabilis na Prototyping
Mabilis na Prototyping
Mabilis na Prototyping
Mabilis na Prototyping
Mabilis na Prototyping
Mabilis na Prototyping
Mabilis na Prototyping

Para sa aming proyekto, nagtatrabaho kami ng mabilis na prototyping bago itayo ang aming LED matrix at i-program ang aming laro. Ang dahilan para gawin ito ay hindi namin nais na bumuo ng LED matrix lamang upang mapagtanto ang aming mga code ay hindi gumana o ang aming laro lohika ay may kapintasan ay ilang paraan.

Sa panig ng hardware, sa unang yugto ay nasubukan lamang namin ang aming lohika sa paglilipat ng mga pattern ng ilaw sa aming sariling simpleng LED matrix. Kapag nasubukan namin na ang lohika ay gumagana nang maayos, pagkatapos ay lumabas kami upang gupitin ang mga piraso ng 5 Ws2812b LEDs lamang upang masubukan ang aming lohika ng laro na may iba't ibang mga hilera. Kapag nagawa iyon, pagkatapos ay magpatuloy kaming gumawa ng LED matrix sa buong sukat.

Sinubukan din namin ang iba't ibang mga sample ng acrylics sa LED bago tumira sa PL-422 bilang pinakamahusay na diffuser ng ilaw. At para sa istraktura ng separator sinubukan din namin ang iba't ibang mga taas para sa LED upang ganap na magkakalat. Sa huli natanto namin ang 3cm * 3cm square na may taas na 4cm upang maging pinakamahusay para sa pagsasabog. Batay sa pinakamainam na sukat na ito, nagpasya din kami kung ano ang sukat ng playwud na kinakailangan para sa isang 5 x 11 LED matrix sa pamamagitan ng pag-iwan ng 0.5cm na puwang para sa foam sa pagitan ng mga parisukat.

Sa panig ng software, sinusubukan naming maging kasing modular hangga't maaari - sinubukan muna namin kung ang mga LED ay maaaring naiilawan bago magpatuloy upang idagdag ang shift function, at pagkatapos ay ang iba pa. Maaaring maging mapinsala ang mga resulta kung hindi mo ito gagawin. Nalaman namin ito sa mahirap na paraan habang sinubukan naming i-coding ang buong laro sa isang malaking tipak bago napagtanto na hindi namin ito mai-debug. Ouch!

Hakbang 3: Paggawa ng Casing

Paggawa ng Casing
Paggawa ng Casing
Paggawa ng Casing
Paggawa ng Casing
Paggawa ng Casing
Paggawa ng Casing
Paggawa ng Casing
Paggawa ng Casing

Para sa aming pambalot, nagpunta kami sa mga klasikong pakiramdam at hitsura ng arcade machine. Una, pinutol namin ang ilang manipis na playwud upang mabilis na prototype ang hugis dahil mas madali at mas mabilis itong i-cut ang manipis na playwud at subukan. Kapag nasiyahan kami sa aming mga sukat at hugis, nagsimula kaming gumamit ng mas makapal na playwud upang maitayo ang pambalot. Gumamit kami ng isang lagari ng banda upang putulin ang mas makapal na playwud at isang scroll saw upang maputol ang mga mas payat. Pagkatapos nito, gumamit kami ng pandikit na kahoy upang idikit silang magkasama.

Para sa likod ng playwud, nais naming madaling ma-access ang mga electronics sa loob kaya't ginawa namin ito sa isang lock-in-place na piraso na madali mong matatanggal kahit kailan mo gusto.

Upang ikabit ang pindutan, iginuhit muna namin ang isang bilog na laki ng diameter ng microswitch ng pindutan (sa ilalim ng mahabang bahagi ng pindutan). Pagkatapos ay nag-drill kami ng isang butas malapit sa gilid at ginamit ang scroll saw upang makita ang isang bilog. Pagkatapos ay inilagay namin ang pindutan at i-tornilyo ito sa.

Pinutol din namin ang isang manipis na piraso ng playwud bilang base ng aming LED matrix ayon sa mga laki na kinakalkula namin dati.

Tandaan: Humihingi ako ng paumanhin para sa kakulangan ng sunud-sunod na proseso. Hindi namin dokumentado ang mga hakbang sa lahat ng paraan at sa oras na napagtanto na kailangan naming idokumento ang mga hakbang, tapos na ang pambalot. Ang diagram ay hindi rin ang pangwakas na sukat.

Hakbang 4: Paggawa ng LED Matrix

Paggawa ng LED Matrix
Paggawa ng LED Matrix
Paggawa ng LED Matrix
Paggawa ng LED Matrix

Gamit ang manipis na piraso na aming pinutol nang mas maaga, una naming minarkahan ang posisyon ng bawat LED sa pamamagitan ng pagguhit ng isang parisukat batay sa aming istraktura ng bula at pagguhit ng isang krus sa gitna ng parisukat bilang lugar kung saan dapat naming idikit ang LED. Pagkatapos ay nag-drill din kami ng 3 maliliit na butas sa bawat panig ng LED para sa mga wires na dumaan at maghinang ito sa bawat LED.

Daisy-chain namin ang bawat hilera ng LED ng kanilang mga Data In at Data Out na pin at hinihinang namin ang bawat GND at VCC sa isang karaniwang kawad. Ang nangungunang Data In ay bubuo ng mga light pattern para sa bawat hilera at ikinonekta namin ito sa pinout ng microcontroller / FPGA. Maaari mo ring solder ang huling Data Out ng isang hilera sa nangungunang Data In ng isa pang hilera. Ang paraan ng paggana ng Ws2812b LED ay ang bawat LED ay naglalaman ng isang IC na kukuha ng kinakailangang data mula sa kawad at ipasa ang natitira sa kadena. Ibinigay namin ang aming LED sa isa pang kamangha-manghang Mga Instructionable (Sa katunayan, eksaktong kinopya namin ito! XD)

Dito nais din naming bigyang diin ang kahalagahan ng paggamit ng malambot na mga wire. Kung gumagamit ka ng matibay, matitigas na mga wire para sa nangungunang Data In pin, kung ano ang mangyayari sa tuwing hinuhugot mo ang kawad maaari nitong hilahin ang tanso na tanso sa iyong Ws2812b na masisira nito. Sa proyektong ito, bago kami nagbago sa malambot na mga wire, nawasak namin ang isang kabuuang 40 LED na 1/3 ng mga LED na kinakailangan para sa aming proyekto.

Maituturo:

Hakbang 5: Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware

Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware
Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware
Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware
Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware
Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware
Pagsulat ng Mga Code ng Laro at Pag-debug ng Hardware

Nagpapatakbo ang Mojo ng Lucid HDL, na hindi ang pinakapopular na wika doon. Hindi kami makahanap ng anumang mga aklatan ng Ws2812b LED sa Lucid kaya't nagsimula kaming magsulat ng aming sariling silid-aklatan, na isang napaka-kagiliw-giliw na karanasan. Upang magawa iyon, sinuri muna namin ang signal na naipasa sa pamamagitan ng paggamit ng FastLED library ng Arduino at nagsulat ng mga code upang makopya iyon. Narito ang isang trick ng pag-debug ng hardware, ang oscilloscope ay napaka, napaka kapaki-pakinabang upang pag-aralan ang mga signal, maging ang pag-debug ng iyong sariling signal na hindi ka sigurado o suriin at kopyahin ang iba pang mga signal.

Matapos isulat ang aklatan para sa Ws2812b, pagkatapos ay magpatuloy kami sa code para sa laro, ginamit namin ang mga pagpapaandar ng Bit shift upang ilipat ang bawat bloke sa kaliwa at sa kanan at ginamit ang Bitwise AT sa AT ang mga parisukat ng bawat hilera sa nakaraang hilera. Maaari mo ring maiisip na ipatupad iyon sa Arduino, na hindi dapat ganoon kahirap. Nag-code din kami ng mga screen ng laro para sa kasiyahan nito!

Ang aming laro ay mayroong 2 mga antas, na kung saan ay ang nakikitang stacking game (Green) at ang pangalawang antas ng hindi nakikitang stacking game (Blue).

Kahit na pagkatapos na mayroon kaming mga gumaganang code at nagtatrabaho LED matrix, minsan nahaharap pa rin kami sa mga problema tulad ng mga ilaw na kumikislap o mga ilaw na nag-iilaw kung hindi dapat. Kadalasan ang problema ay dahil sa hindi tamang saligan, antas ng suplay ng kuryente o pagkagambala. Dito kakailanganin mo ang iba pang mga tool sa pag-debug ng hardware tulad ng variable unit ng power supply upang suriin kung ang suplay ng kuryente ng Mojo / Arduino ay sapat o masyadong mataas. Sa aking karanasan, ang Ws2812b ay may medyo malawak na hanay ng mga nagtatrabaho voltages mula sa 2.8v - 5v. Narito mayroon akong isang video na nagpapakita ng mga ilaw na nababaliw pagkatapos na madagdagan ang lakas.

Gayunpaman, ang karagdagang pagsusuri ay nagsiwalat na mayroon kaming ilang hindi wastong panghinang, pagkatapos muling i-solder ang mga ito muli, nalutas ang aming problema. Maaari ding magkaroon ng isang problema sa pagkagambala o pag-uusap, ngunit sa kabutihang palad, hindi namin naharap ang alinman sa kanila.

Mga code ng Github:

Arduino Bitwise Shift:

Arduino Bitwise AT:

Hakbang 6: Pagsasama-sama sa Lahat

Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat
Pinagsasama ang Lahat

Mayroon kang pambalot at ang LED matrix. Panahon na ngayon upang pagsamahin ang lahat. Una naming inilalagay ang foam sa harap at ang LED matrix sa likod nito at inaayos ang posisyon. Dahil ang foam ay may napakataas na alitan ito ay naka-mount lamang na alitan habang ang LED matrix ay mainit na nakadikit sa lugar. Pagkatapos nito inilagay namin ang screen sa harap ng grid. Pagkatapos ay isinaksak namin ang pin ng bawat hilera sa microcontroller at nagsimulang maglaro!: D

Ang isang bagay na gusto ko tungkol sa proyektong ito ay ang kakayahang umangkop, maaari mong palaging i-reprogram ang microcontroller upang maging bahagi ng isa pang laro at subukan ang isang bagay tulad ng paggawa ng animasyon o isang reaksyon na laro. Inaasahan kong masisiyahan kayo sa paggawa nito at alamin ang isang bagay para sa paggawa nito. GgEz!

Inirerekumendang: