Isi kandungan:

Permainan Stackers Arcade: 6 Langkah (dengan Gambar)
Permainan Stackers Arcade: 6 Langkah (dengan Gambar)

Video: Permainan Stackers Arcade: 6 Langkah (dengan Gambar)

Video: Permainan Stackers Arcade: 6 Langkah (dengan Gambar)
Video: Memenangkan 5 Game Ketangkasan Tipuan dengan Sains 2024, Julai
Anonim
Permainan Stackers Arcade
Permainan Stackers Arcade

Hai kawan-kawan, hari ini saya ingin berkongsi dengan anda permainan arked hebat ini yang boleh anda buat dengan banyak LED Ws2812b dan mikrokontroler / FPGA. Lihatlah Stack Overflow - pelaksanaan perkakasan kami dari permainan arcade klasik. Apa yang dimulakan sebagai projek sekolah dengan cepat menjadi tenaga cinta kerana kami mulai menghabiskan lebih banyak masa untuk mengembangkan permainan kami dan belajar lebih banyak daripadanya (dan mengabaikan kajian kami dalam proses xD). Pada akhirnya, permainan kami dibina dengan baik dan diterima dengan baik oleh sekolah kami sehingga disita (sebagai bahan demo untuk kumpulan pelajar seterusnya). Kita boleh membina yang kedua. Mari kita mulakan!

Versi permainan dalam talian:

Langkah 1: Apa Yang Anda Perlu?

Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?
Apa Yang Anda Perlu?

Bahan:

1. Microcontroller / Microcomputer / FPGA - FPGA digunakan untuk melaksanakan logik permainan kami. Pilih papan anda, untuk projek kami, kami dikehendaki menggunakan papan Mojo FPGA. Bagi yang belum tahu, ini adalah jenis papan yang menggunakan perkakasan untuk melaksanakan fungsinya dan bukannya kod. Oleh itu, saya akan mengatakan tahapnya agak rendah dan sama sekali berbeza daripada jika anda menggunakan Arduino atau Pi. Sekiranya anda menggunakan papan lain, anda mesti menulis kod anda sendiri, tetapi permainan ini cukup mudah untuk dikod dan hei! Sekarang anda boleh belajar pengekodan juga!

2. LED Ws2812b - Di sini kita menggunakan LED untuk membina paparan untuk permainan kita. Tidak boleh menjadi pembuat jika anda belum menyentuh Ws2812b sebelum xD. Ini bermaksud satu alamat yang boleh anda aturkan bahawa anda boleh memotong LED tunggal dan menyisipkannya ke dalam bentuk yang anda suka. RGB bermaksud anda boleh mengeluarkan warna yang anda suka. Selanjutnya, FastLED - perpustakaan Arduino untuk mengawal Ws2812b sangat maju. Saya akan mengesyorkan orang menggunakan Arduino sebagai ganti FPGA jika anda tidak memilikinya. Anda boleh membeli LED dari Taobao / Amazon tetapi kami membeli LED dari menara Sim Lim di Singapura.

3. Kayu - Untuk selongsong luaran kami menggunakan papan lapis setebal 1cm dan untuk matriks LED kami menggunakan papan lapis setebal 0.3cm. Kami menemui bekalan kayu buangan dari makmal fab sekolah kami.

4. Akrilik penyebar cahaya - Untuk skrin kami, kami mencuba pelbagai jenis akrilik dan kami dapati akrilik buram ini yang disebut PL-422 yang sangat bagus untuk menyebarkan cahaya. Sekiranya anda tidak dapat mencari model yang tepat, cuba cari akrilik buram. Kami membeli barang kami di Dama Plastics di Singapura.

5. Papan Buih - Untuk memisahkan setiap piksel cahaya, kami memerlukan struktur grid dan busa ini adalah bahan yang sesuai untuk melakukannya. Kami membeli papan busa setebal 0.5cm di kedai buku sekolah kami.

6. Butang Merah Besar - Ok, tidak perlu bagi kita untuk memiliki butang merah yang besar tetapi selalu bagus untuk mempunyai butang untuk orang membanting! xD Kami membelinya di menara Sim Lim di Singapura.

Alat:

1. Gam Kayu

2. Besi Pematerian

3. Pateri

4. Wayar. Yang terbaik jika anda mempunyai wayar lembut berbanding dengan kabel yang lebih kaku. Dan teras tunggal berbanding multicore.

5. Pelucut wayar

6. Pemotong wayar

7. Gerudi dengan bit gerudi 1mm

8. Gulung gergaji

9. Gergaji pita

Menyahpepijat:

1. Unit Bekalan Kuasa Pembolehubah

2. Osiloskop

Langkah 2: Prototaip Cepat

Prototaip Cepat
Prototaip Cepat
Prototaip Cepat
Prototaip Cepat
Prototaip Cepat
Prototaip Cepat
Prototaip Cepat
Prototaip Cepat

Untuk projek kami, kami menggunakan prototaip cepat sebelum membina matriks LED kami dan memprogramkan permainan kami. Sebab untuk melakukannya adalah bahawa kita tidak mahu membina matriks LED hanya untuk menyedari bahawa kod kita tidak berfungsi atau logik permainan kita cacat adalah beberapa cara.

Dari segi perkakasan, pada peringkat pertama kami baru saja menguji logik kami untuk menukar corak cahaya pada matriks LED sederhana kami sendiri. Setelah kami menguji logiknya dengan baik, kami kemudian memotong jalur LED 5 Ws2812b hanya untuk menguji logik permainan kami dengan baris yang berbeza. Setelah berjaya, kami kemudian membuat fabrikasi matriks LED pada skala penuh.

Kami juga menguji pelbagai sampel akrilik dengan LED sebelum menetapkan PL-422 sebagai penyebar cahaya terbaik. Dan untuk struktur pemisah, kami juga menguji ketinggian yang berbeza agar LED dapat meresap sepenuhnya. Pada akhirnya kami menyedari 3cm * 3cm persegi dengan ketinggian 4cm menjadi yang terbaik untuk penyebaran. Berdasarkan ukuran optimum ini, kami juga memutuskan berapakah ukuran papan lapis yang diperlukan untuk matriks LED 5 x 11 dengan meninggalkan jurang 0.5cm untuk buih di antara kotak..

Dari sisi perisian, kami berusaha sekodular mungkin - kami menguji terlebih dahulu sama ada LED boleh menyala sebelum meneruskan untuk menambahkan fungsi shift, dan kemudian yang lain. Hasilnya boleh menjadi bencana jika anda tidak melakukan ini. Kami mempelajarinya dengan cara yang sukar kerana kami mencuba membuat coding keseluruhan permainan dalam jumlah besar sebelum menyedari bahawa kami tidak dapat melakukan debug. Aduh!

Langkah 3: Membuat Selongsong

Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong
Membuat Selongsong

Untuk selongsong kami, kami pergi dengan rasa dan rupa mesin arked klasik. Pertama, kami memotong beberapa papan lapis nipis untuk memprotaip bentuk dengan cepat kerana lebih mudah dan cepat memotong papan lapis nipis dan diuji. Setelah berpuas hati dengan dimensi dan bentuknya, kami mula menggunakan papan lapis tebal untuk membina selongsong. Kami menggunakan gergaji besi untuk memotong papan lapis yang lebih tebal dan gergaji tatal untuk memotong yang lebih nipis. Selepas itu, kami menggunakan gam kayu untuk merekatkannya bersama.

Untuk bahagian belakang papan lapis, kami ingin mengakses elektronik di dalamnya dengan mudah, oleh itu kami menjadikannya sebagai bahagian kunci di tempat yang boleh anda keluarkan dengan mudah bila-bila masa yang anda mahukan.

Untuk melampirkan butang, pertama-tama kami melukis bulatan dengan ukuran diameter microswitch (bahagian panjang bawah butang). Kami kemudian menggerudi lubang di dekat pinggir dan menggunakan gergaji tatal untuk melihat bulatan melalui. Kemudian kami meletakkan butang dan memasukkannya ke dalam.

Kami juga memotong sekeping papan lapis nipis sebagai asas matriks LED kami mengikut ukuran yang kami kira sebelumnya.

Catatan: Saya meminta maaf kerana kekurangan proses langkah demi langkah. Kami tidak mendokumentasikan langkahnya sepanjang jalan dan pada saat kami menyedari bahawa kami perlu mendokumentasikan langkahnya, selongsong sudah selesai. Gambarajah juga bukan dimensi akhir.

Langkah 4: Membuat Matriks LED

Membuat Matriks LED
Membuat Matriks LED
Membuat Matriks LED
Membuat Matriks LED

Dengan menggunakan potongan nipis yang telah kita potong sebelumnya, pertama-tama kita menandakan kedudukan setiap LED dengan melukis sebuah segi empat tepat berdasarkan struktur busa kita dan melukis sebuah salib di tengah alun-alun sebagai tempat kita harus meletakkan LED. Kemudian kami juga menggerudi 3 lubang kecil di setiap sisi LED untuk wayar masuk dan menyoldernya ke setiap LED.

Kami rantai daisy setiap baris LED dengan pin Data In dan Data Out mereka dan kami menyolder setiap GND dan VCC ke wayar biasa. Data In yang terkemuka akan menghasilkan corak cahaya untuk setiap baris dan kami menghubungkannya ke pinout mikrokontroler / FPGA. Anda juga boleh menyisipkan Data terakhir dari satu baris ke Data In yang terdahulu dari baris yang lain. Cara kerja Ws2812b LED adalah bahawa setiap LED mengandungi IC yang akan mengambil data yang diperlukan dari wayar dan meneruskan selebihnya ke rantai. Kami mendasarkan LED kami pada Instructables hebat lain (Sebenarnya, kami menyalinnya dengan tepat! XD)

Di sini kami juga ingin menekankan pentingnya penggunaan wayar lembut. Sekiranya anda menggunakan wayar keras dan keras untuk pin Data In yang terkemuka, apa yang berlaku adalah setiap kali anda menarik wayar, ia mungkin mengeluarkan pelindung tembaga pada Ws2812b anda yang akan menghancurkannya. Dalam projek ini, sebelum kita menukar ke wayar lembut, kita memusnahkan sebanyak 40 LED yang merupakan 1/3 daripada LED yang diperlukan untuk projek kita.

Boleh diajar:

Langkah 5: Menulis Kod Permainan dan Perkakasan Debug

Menulis Kod Permainan dan Perkakasan Debug
Menulis Kod Permainan dan Perkakasan Debug
Menulis Kod Permainan dan Perkakasan Debug
Menulis Kod Permainan dan Perkakasan Debug
Menulis Kod Permainan dan Perkakasan Debug
Menulis Kod Permainan dan Perkakasan Debug

Mojo menggunakan Lucid HDL, yang bukan merupakan bahasa yang paling popular di luar sana. Kami tidak dapat mencari perpustakaan Ws2812b LED di Lucid, oleh itu kami terpaksa menulis perpustakaan kami sendiri, yang merupakan pengalaman yang sangat menarik. Untuk melakukan itu, pertama-tama kami menganalisis isyarat yang dikeluarkan dengan menggunakan perpustakaan FastLED Arduino dan menulis kod untuk menirunya. Berikut adalah tip debug perkakasan, osiloskop sangat berguna untuk menganalisis isyarat, sama ada menyahpepijat isyarat anda sendiri yang anda tidak pasti atau memeriksa dan menyalin isyarat lain.

Setelah menulis perpustakaan untuk Ws2812b, kami kemudian meneruskan kod untuk permainan, kami menggunakan fungsi pergeseran Bit untuk memindahkan setiap blok ke kiri dan ke kanan dan menggunakan kotak Bitwise DAN ke DAN setiap baris ke baris sebelumnya. Anda juga boleh memikirkan untuk melaksanakannya di Arduino, yang seharusnya tidak begitu sukar. Kami bahkan mengkod skrin permainan untuk keseronokannya!

Permainan kami mempunyai 2 tingkat, yaitu permainan susun yang terlihat (Hijau) dan permainan susun tak terlihat tingkat kedua (Biru).

Walaupun kita mempunyai kod kerja dan matriks LED yang berfungsi, kadang-kadang kita masih menghadapi masalah seperti lampu berkelip atau lampu menyala ketika tidak seharusnya. Masalahnya biasanya disebabkan oleh pembumian, tahap bekalan kuasa atau gangguan yang tidak betul. Di sinilah anda memerlukan alat debug perkakasan lain seperti unit bekalan kuasa berubah-ubah untuk memeriksa sama ada bekalan kuasa Mojo / Arduino mencukupi atau terlalu tinggi. Menurut pengalaman saya, Ws2812b mempunyai voltan kerja yang cukup luas dari 2.8v - 5v. Di sini saya mempunyai video yang menunjukkan lampu akan menjadi semakin gila setelah saya meningkatkan kuasa.

Namun, pemeriksaan lebih lanjut menunjukkan bahawa kami mempunyai beberapa solder yang tidak betul, setelah menyoldernya sekali lagi, masalah kami diselesaikan. Mungkin juga ada masalah dengan gangguan atau percakapan silang, tapi syukurlah, kami tidak pernah menghadapi masalah tersebut.

Kod Github:

Arduino Bitwise Shift:

Arduino Bitwise DAN:

Langkah 6: Menggabungkan Semuanya

Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya
Menggabungkan Semuanya

Anda mempunyai casing dan matriks LED. Sekarang masanya untuk menyatukan semuanya. Mula-mula kita letakkan busa di bahagian depan dan matriks LED di belakangnya dan sesuaikan kedudukannya. Kerana busa mempunyai geseran yang sangat tinggi, ia hanya dipasang geseran sedangkan matriks LED terpaku panas di tempatnya. Selepas itu kami meletakkan skrin di hadapan grid. Kami kemudian memasang pin setiap baris ke mikrokontroler dan mula bermain!: D

Satu perkara yang saya sukai dalam projek ini adalah fleksibiliti, anda selalu dapat memprogramkan semula mikrokontroler untuk menjadi sebahagian daripada permainan lain dan mencuba sesuatu seperti membuat animasi atau permainan reaksi. Semoga anda menikmati membuat ini dan belajar sesuatu untuk membuatnya. GgEz!

Disyorkan: