Daftar Isi:

Pumpktris - Labu Tetris: 10 Langkah (dengan Gambar)
Pumpktris - Labu Tetris: 10 Langkah (dengan Gambar)
Anonim
Labu - Labu Tetris
Labu - Labu Tetris

Siapa yang ingin wajah menyeringai dan lilin ketika Anda dapat memiliki labu interaktif Halloween ini? Mainkan game susun balok favorit Anda di kisi 8x16 yang diukir di muka labu, diterangi oleh LED dan menggunakan batangnya sebagai pengontrol. Ini adalah proyek yang cukup maju dan membutuhkan pengalaman menyolder dan memprogram di lingkungan Arduino. Anda akan bekerja dengan bahan organik dan semua keunikannya, jadi pengukuran mungkin perlu disesuaikan agar sesuai dengan labu yang Anda gunakan.

Langkah 1: Bahan yang Diperlukan

Bahan yang Diperlukan
Bahan yang Diperlukan
Bahan yang Diperlukan
Bahan yang Diperlukan

Untuk membuat Pumpktris Anda sendiri, Anda memerlukan yang berikut: Komponen

  • 128 LED amber 5mm (Saya menggunakan ini dari Mouser) Beli beberapa tambahan untuk menutupi kesalahan atau pengujian. Saya mendapat 140. Amber paling mirip dengan nyala api yang ada di dalam jack-o-lantern tradisional, tetapi Anda bebas menggunakan warna apa pun yang Anda suka.
  • mikrokontroler Arduino
  • 1/16" Heat shrink tubing (11 kaki, atau 256 1/2" potongan panjang)
  • Joystick arcade dengan pegangan yang dapat dilepas (yang ini dari SparkFun bekerja dengan baik untuk saya)
  • 4 #6 jangkar drywall nilon Ini bukan jenis dengan sakelar, tetapi jenis yang terlihat seperti sekrup dengan ulir dalam
  • 4 sekrup panjang setengah inci dengan ukuran dan jenis yang sama yang disertakan dengan jangkar drywall. Yang datang dengan jangkar akan terlalu panjang.
  • Baut 6mm x 50mm (atau ukuran apa pun yang cocok dengan dudukan untuk pegangan joystick Anda)
  • Mur kopling 6mm (atau ukuran apa pun yang diperlukan untuk mencocokkan baut di atas) Mur kopling terlihat seperti mur biasa, tetapi panjangnya sekitar satu inci dan digunakan untuk menyambung dua baut atau potongan batang berulir.

Dan yang tak kalah pentingnya, Anda membutuhkan 1 labu. Anda hanya membutuhkan satu, tetapi saya sarankan dua sehingga Anda memiliki satu yang dapat Anda gunakan untuk berlatih mengebor dan memotong. Matriks LED Anda akan menutupi area dengan tinggi sekitar 4" kali 8", jadi Anda menginginkan labu dengan area yang berukuran semulus dan sedatar mungkin sehingga matriks Anda tidak membungkus terlalu jauh. Anda bisa menggunakan labu busa, tapi di mana keajaibannya? Saya tidak bisa berbicara dengan teknik ukiran yang dibutuhkan pada labu busa. Alat dan Bahan Habis Pakai

  • Besi solder
  • Pateri
  • Pemotong kawat
  • penari telanjang kawat
  • Bor motor
  • Gergaji besi
  • Pisau X-Acto
  • Mata bor 13/64"
  • Mata bor 1-1/8" (saya menggunakan mata bor Forstner, tetapi mata bor juga bisa digunakan)
  • 1/4 "papan inti busa

Langkah 2: Membangun Matriks LED

Membangun Matriks LED
Membangun Matriks LED
Membangun Matriks LED
Membangun Matriks LED
Membangun Matriks LED
Membangun Matriks LED

Setiap matriks terbuat dari 64 LED dan 128 buah kawat. Paling mudah untuk memotong dan mengupas semua kabel untuk setiap matriks sebelumnya. Potong 112 menjadi potongan 2,5 "dan lepaskan 1/4" dari setiap ujungnya. Potong 16 sisanya menjadi potongan 12" dan kupas kedua ujungnya. Semakin konsisten Anda bisa mendapatkan panjang kawat Anda, semakin mudah untuk membangun dan memasang.

Anda akan mulai dengan membangun enam belas delapan-segmen daisy-rantai kabel-masing-masing dengan 7 pendek dan 1 kabel panjang. Putar setiap ujung bersama-sama dengan potongan berikutnya dan solder. Untuk menghubungkan kabel ke LED, Anda memerlukan jig untuk menahan LED. Gambarlah kisi berukuran 8x8 dengan jarak setengah inci pada selembar papan inti busa setebal 1/4", lalu gunakan penusuk untuk membuat lubang dengan diameter sedikit lebih kecil dari LED di setiap persimpangan. Anda akan memiliki 64 lubang saat selesai. Di baris atas lubang, masukkan 8 LED. Inti busa akan meregang agar sesuai dengan LED dan akan menahannya dengan kuat. Sejajarkan LED sehingga kaki yang lebih panjang - ujung anoda - menghadap ke arah Anda pada masing-masing. Periksa kembali, karena jika Anda salah, matriks tidak akan berfungsi. Jepit setiap anoda sepanjang sekitar 1/4", dan timah dengan solder untuk memudahkan menghubungkan kabel. Potong 8 buah pipa heat-shrink menjadi segmen 1/2". Geser sepotong pipa di atas sambungan kabel pertama, dorong ke belakang agar tidak terpengaruh oleh panas solder, lalu solder sambungan kabel ke anoda LED. Geser tabung ke bawah melalui sambungan setelah dingin. Lanjutkan ke LED berikutnya, ulangi tujuh kali lagi proses menggeser pada sepotong tabung, menyolder sambungan, lalu menurunkan tabung di atas sambungan. Bila Anda punya set delapan LED semua terhubung satu sama lain, lepaskan dari jig dan ulangi lagi untuk tujuh baris lagi, pastikan untuk membuat semua koneksi ke anoda memimpin setiap LED. Anda dapat menggunakan baris jig mana yang paling mudah dijangkau, karena Anda hanya bekerja dengan satu per satu. Setelah semua delapan baris telah disolder, saatnya untuk bergabung dengan kolom dan membuat matriks. Masukkan semua string LED ke dalam jig yang Anda buat. Jaga agar kabel panjang tetap sama sisi setiap string. Potong dan timah kabel katoda setiap LED di kolom pertama umn, seperti yang Anda lakukan untuk membuat string. Ambil rantai kawat lain dan ulangi proses menyoldernya ke LED, hanya saja kali ini Anda menghubungkannya pada 90 derajat ke set kabel pertama yang Anda lakukan. Jauhkan kabel panjang di sisi yang sama dari matriks. Saat Anda menyelesaikan setiap kolom, lepaskan dari jig inti busa dan lipat keluar dari jalan untuk memberikan akses ke kolom berikutnya. Setelah selesai, Anda akan memiliki 64 LED yang tergabung dalam 8 baris dan 8 kolom. Sayangnya, Anda perlu mengulangi prosesnya lagi untuk matriks kedua. Jika Anda perlu istirahat, lewati ke langkah 3, 4, dan 5 untuk mengerjakan kode, lalu kembali ke ini.

Langkah 3: Mengontrol LED

Mengontrol LED
Mengontrol LED
Mengontrol LED
Mengontrol LED
Mengontrol LED
Mengontrol LED
Mengontrol LED
Mengontrol LED

Matriks LED yang Anda buat akan dikendalikan oleh dua Ransel Matriks LED Mini 8x8 dari Adafruit. Setiap pengontrol memungkinkan Anda untuk menggerakkan 64 LED hanya dengan dua kabel dari Arduino, dan Anda dapat menghubungkan beberapa pengontrol bersama-sama pada dua kabel yang sama. Ikuti petunjuk yang disertakan dengan Ransel Matrix LED untuk menyolder pada header daya/data/jam 4-pin. Kemudian, alih-alih menyolder pada matriks LED yang menyertainya, solder dua baris header wanita ke ransel. Pasang matriks LED mini yang disertakan ke dalam header. Colokkan matriks ke papan tempat memotong roti dan hubungkan sebagai berikut:

  • Hubungkan pin CLK pada Backpack ke pin analog 5 pada Arduino.
  • Hubungkan pin DAT ke pin analog 4 pada Arduino.
  • Hubungkan GND ke pin ground pada Arduino.
  • Hubungkan VCC+ ke daya 5v.

Unduh perpustakaan Adafruit LED Backpack dan perpustakaan Adafruit GFX dan instal di komputer Anda dengan menyalin masing-masing ke folder "perpustakaan" dari folder sketsa Arduino komputer Anda. Unggah file "matrix8x8" ke Arduino Anda dan verifikasi bahwa ransel LED berfungsi. Pin matriks LED mungkin tidak membuat kontak yang baik di header wanita, jadi Anda mungkin perlu menggoyangkan atau melepas sebagian untuk membuat kontak dan membiarkan semua baris dan kolom menyala. Ulangi proses dengan ransel LED kedua, tetapi kali ini Anda harus menetapkan alamat baru untuk itu dengan menyolder jumper di bantalan A0 di ransel. Jalankan kode "matrix8x8" lagi, tetapi ubah baris "matrix.begin(0x70)" menjadi "matrix.begin(0x71)" agar kode tersebut membahas ransel LED baru.

Langkah 4: Menghubungkan Joystick

Menghubungkan Joystick
Menghubungkan Joystick
Menghubungkan Joystick
Menghubungkan Joystick

Joystick Anda harus memiliki empat sakelar dengan masing-masing dua terminal. Saat Anda menggerakkan joystick ke kanan, itu memicu sakelar di kiri, ketika Anda memindahkannya ke bawah, itu memicu sakelar di atas, dan seterusnya. Pada satu terminal setiap sakelar, solder kabel 3". Putar ujung keempat kabel ini bersama-sama dan solder ke kabel 12". Ini adalah kesamaan untuk keempat sakelar. Solder kabel 12" ke terminal yang tersisa dari setiap sakelar, lalu sambungkan sebagai berikut:

  • Hubungkan sakelar bawah (diaktifkan saat Anda mendorong) ke pin analog 0 pada Arduino.
  • Hubungkan sakelar kiri (diaktifkan saat Anda menekan kanan) ke pin analog 1 pada Arduino.
  • Hubungkan sakelar atas (diaktifkan saat Anda menekan ke bawah) ke pin analog 2 di Arduino.
  • Hubungkan sakelar kanan (diaktifkan saat Anda menekan kiri) ke pin analog 3 di Arduino.
  • Hubungkan kabel arde bersama ke pin arde pada Arduino.

Langkah 5: Memprogram Game

Pemrograman Game
Pemrograman Game

Unduh Pumpktris.ino.zip terlampir, unzip, dan buka file di lingkungan pengembangan Arduino. Kompilasi dan unggah ke Arduino Anda. Anda sekarang harus dapat bermain di matriks LED mini yang Anda atur di langkah sebelumnya. Saya telah mencoba untuk mengomentari kode sebanyak mungkin, tetapi inilah gambaran umum dari proses utama: Menggambarkan Bentuk Ada tujuh tetromino, masing-masing dengan 4 piksel, dan masing-masing dengan empat kemungkinan rotasi. Kami menyimpan semua ini dalam larik multidimensi: dimensi pertama terdiri dari tujuh bentuk, dimensi kedua berisi empat rotasi untuk setiap bentuk, dimensi ketiga berisi empat deskripsi piksel yang masing-masing terdiri dari koordinat X dan Y. Misalnya, ini menggambarkan bentuk "T":/* T */ { /* sudut 0 */ { {0, 1}, {1, 1}, {2, 1}, {1, 2} }, / * sudut 90 */ { {1, 0}, {1, 1}, {2, 1}, {1, 2} }, /* sudut 180 */ { {1, 0}, {0, 1}, {1, 1}, {2, 1} }, /* sudut 270 */ { {1, 0}, {0, 1}, {1, 1}, {1, 2} } }

Melacak Potongan Aktif Untuk melacak kepingan yang sedang dimainkan, program mempertahankan variabel Potongan aktif. Ini adalah indeks dari bentuk aktif di tingkat tertinggi dari array. Itu juga menyimpan variabel rotasi yang berisi indeks rotasi saat ini. Variabel xOffset melacak seberapa jauh ke kiri atau kanan (0-7) setiap bagian, dan yOffset melacak seberapa jauh (0-15) papan jatuh. Untuk menggambar bagian aktif, program menambahkan nilai offset X dan Y ke koordinat X dan Y dari setiap piksel yang ditarik dari rotasi saat ini dari bagian yang dipilih. Melacak Potongan Tetap Program ini menggunakan larik 16 byte untuk melacak bagian tetap. potongan, dengan setiap byte mewakili baris. Misalnya, larik di bawah ini akan mewakili bentuk L yang berada di tengah dua baris terbawah (seperti yang ditunjukkan oleh angka 1 dalam dua byte terakhir): byte sampleGrid[16]= { B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00100000, B00111000 }; Deteksi Tabrakan Ketika upaya dilakukan untuk memindahkan potongan aktif, program pertama-tama memeriksa posisi baru terhadap susunan potongan tetap. Jika tidak ada tumbukan, gerakan diperbolehkan dan matriks digambar ulang. Jika tabrakan terdeteksi saat mencoba bergerak ke kiri, kanan, atau memutar, tindakan tersebut dilarang. Jika tabrakan terdeteksi saat mencoba menjatuhkan bidak, bidak menjadi tetap pada posisinya dan ditambahkan ke susunan piksel tetap. Menjatuhkan Potongan Secara Otomatis Kecepatan permainan dikendalikan oleh variabel Gravitasi Pemicu dan Penghitung Langkah. Setiap loop dari program menambah stepCounter, dan setiap kali stepCounter mencapai hitungan yang disimpan dalam gravityTrigger, itu menjatuhkan bagian aktif satu tingkat. Saat permainan berlangsung, gravityTrigger berkurang sehingga bagian yang aktif turun lebih sering hingga akhirnya jatuh di setiap putaran program. Setiap kali bagian aktif dipasang ke grid, program akan memeriksa byte/baris penuh (B11111111). Jika ditemukan, itu akan berkedip tiga kali, lalu menghapusnya dan menjatuhkan baris di atas untuk mengisi celah. Pemecahan Masalah Jika potongan tidak jatuh dari atas ke bawah, tetapi bergerak dari sisi ke sisi, ubah nilai yang diteruskan di baris "matrixTop.setRotation(1);" dan/atau "matrixBottom.setRotation(1);" dalam lingkaran "pengaturan ()". Jika potongan dimulai pada matriks yang salah, alihkan lokasi fisik setiap matriks atau balikkan alamat yang dideklarasikan dalam "matrixTop.begin(0x70);" dan "matrixBottom.begin(0x71);" baris loop "setup()". Jika beberapa baris atau kolom tidak menyala, goyangkan matriks LED mini di header wanita. Mereka mungkin tidak melakukan kontak yang baik.

Langkah 6: Menghubungkan Matriks LED Anda

Menghubungkan Matriks LED Anda
Menghubungkan Matriks LED Anda
Menghubungkan Matriks LED Anda
Menghubungkan Matriks LED Anda
Menghubungkan Matriks LED Anda
Menghubungkan Matriks LED Anda

Ketika semua kode dan kontrol telah diverifikasi berfungsi dengan matriks LED mini, saatnya untuk memasang matriks LED besar yang Anda solder sendiri.

Anda dapat mencolokkan setiap kabel ke header pada ransel matriks satu per satu, tetapi Anda mungkin akan melakukan banyak hal mencolokkan dan mencabut kabel, sehingga bisa sangat merepotkan. Alih-alih, Anda ingin menyolder setiap kawat ke strip header laki-laki dan menyambungkannya ke ransel matriks. Saya memasang strip header pada sepotong papan prototyping sehingga saya bisa pasang dan cabut semua 16 pin bersama-sama. Baris 1-4 terhubung ke pin 1-4 pada ransel matriks (penomoran pin dimulai di kiri atas saat Anda melihat ke bawah pada ransel dengan pin power/ground/data/clock 4-pin di atas). Kolom 1-4 terhubung ke pin 5-8. Penomoran pin melingkar sehingga pin 9 berada di kanan bawah. Baris 5-8 terhubung ke pin 12-9, dan kolom 5-8 terhubung ke pin 16-13. Lihat diagram untuk lebih jelas. Colokkan setiap matriks ke dalam ransel dan jalankan program "matrix8x8" yang sama dengan yang Anda lakukan untuk matriks LED mini di langkah 4. Jika masing-masing berfungsi, Anda dapat memuat program game. Jika tidak berhasil, periksa apakah baris dan kolom matriks LED besar dicolokkan ke pin ransel yang benar. Memasang matriks LED di jig inti busa yang Anda buat untuk perakitan dapat mempermudah pengujian seluruh sistem.

Langkah 7: Mengukir Labu

Mengukir Labu
Mengukir Labu
Mengukir Labu
Mengukir Labu
Mengukir Labu
Mengukir Labu

Jangan mengukir labu sampai semua perangkat elektronik Anda berfungsi. Labu berukir memiliki masa simpan yang terbatas, dan jika Anda mengukirnya terlebih dahulu dan kemudian menghabiskan 2 hari untuk elektronik, itu berarti Anda telah kehilangan kesenangan bermain game selama dua hari.

Temukan sisi paling rata pada labu sehingga panel LED Anda tidak membungkus terlalu jauh, lalu buat lubang di sisi yang berlawanan. Bermurah hatilah; Anda akan membutuhkan ruang untuk mendapatkan tangan Anda di sana untuk bekerja. Anda tidak akan memotong bagian atasnya seperti pada labu tradisional karena bagian atasnya harus dibiarkan utuh untuk joystick. Goo labu dan barang elektronik bukanlah teman baik, jadi bersihkan bagian dalamnya dengan baik. Untuk Labu yang paling tampan, Anda ingin kisi-kisi LED Anda lurus dan sejajar dengan labu. PDF dilampirkan dengan spasi 8x16, terpisah setengah inci. Cetak ini (atau buat sendiri dengan jarak Anda sendiri), potong tepinya, dan rekatkan ke bagian depan labu. Pastikan bahwa itu lurus ke atas dan ke bawah. Dengan paku, tusuk gigi, atau alat serupa lainnya, buat lubang pilot di tengah setiap LED yang ditandai di atas kertas. Pengeboran langsung melalui kertas tidak disarankan karena kemungkinan akan bergeser atau robek. Setelah semua lubang pilot ditusuk, lepaskan templat kertas dan gunakan mata bor 13/64" di bor listrik Anda untuk mengebor setiap lubang. Jangan sejajarkan bor tegak lurus dengan permukaan labu! Jika Anda melakukan ini, kelengkungan labu dapat menyebabkan lubang yang terpisah setengah inci di bagian luar bertemu di bagian dalam dan akan sulit untuk memasukkan LED. Sebaliknya cobalah untuk menjaga semua lubang sejajar. Ketika semua lubang dibor, gunakan pisau X-Acto Anda untuk memotong "piksel" persegi di sekitar setiap lubang. Arahkan pisau ke tengah setiap lubang dan sisakan sekitar 1/8" di antara piksel. Saya sarankan membeli labu latihan dan menggunakannya untuk menyempurnakan teknik pengeboran dan ukiran piksel Anda. Kuasai di sana sebelum Anda mengambil kesempatan untuk menghancurkan labu sempurna yang Anda temukan untuk produk jadi.

Langkah 8: Memasang Batang ke Joystick

Memasang Batang ke Joystick
Memasang Batang ke Joystick
Memasang Batang ke Joystick
Memasang Batang ke Joystick
Memasang Batang ke Joystick
Memasang Batang ke Joystick
Memasang Batang ke Joystick
Memasang Batang ke Joystick

Sekarang Anda akan menyesuaikan batang untuk digunakan sebagai joystick untuk mengontrol permainan.

Potong batang sedekat mungkin dengan pangkal. Jika potongannya tidak halus dan bersih, gunakan blok pengamplasan untuk meratakannya. Bor lubang 1-1/8" lurus melalui pangkal batang dan ke dalam labu. Lepaskan bola joystick dan sejajarkan poros dengan bagian tengah lubang dari bagian dalam labu. Pastikan bagian depan labu joystick berbentuk bujur sangkar dengan bagian depan labu-ketika bermain ingin didorong ke kiri dan ke kanan untuk memindahkan bidak, tidak miring. Saat berada di tengah dan persegi, gunakan paku atau tusuk gigi untuk melubangi bagian dalam labu di atas lubang pemasangan di dasar joystick. Lepaskan joystick. Dengan pemotong kawat Anda, potong ujung yang melebar dari jangkar drywall sehingga lebih pendek dari ketebalan kulit labu. Pasang jangkar drywall yang pendek dan snubnose ini ke lubang pilot yang Anda buat. Detail bagian selanjutnya akan tergantung pada joystick yang Anda beli. Yang saya gunakan dari SparkFun memiliki attachment 6mm untuk pegangan bola yang akan diganti dengan batangnya. Jika joystick Anda berbeda, gunakan mur dan baut ukuran apa pun yang cocok. Temukan tengah batang dan bor lubang 13/64" (ukuran yang sama yang Anda gunakan untuk lubang LED, secara kebetulan) sekitar satu inci langsung ke batang. Ini akan menjadi langkah yang baik untuk menguji labu latihan Anda, untuk memastikan bautnya masuk dengan kencang ke dalam lubang. Potong kepala baut 6mm x 50mm dengan gergaji besi. Letakkan epoksi atau lem kayu ke benang di dekat ujung sekrup yang dipotong, dan kencangkan ke batangnya. Anda ingin satu inci atau lebih di batang dan satu inci di luar. Pasang mur kopling 6mm ke poros joystick, tetapi jangan pasang joystick di labu dulu.

Langkah 9: Penempatan LED dan Joystick

Penempatan LED dan Joystick
Penempatan LED dan Joystick

Dari bagian dalam labu, masukkan LED baris demi baris ke dalam lubangnya sampai alasnya rata dengan permukaan bagian dalam labu. Saat semua sudah terpasang, gunakan tusuk sate bambu untuk mendorongnya lebih dalam ke arah depan. Saya membiarkan tepi depan mereka duduk sekitar 1/4 "hingga 3/8" di bawah permukaan luar. Jika terlalu jauh di bawah permukaan, cahaya akan masuk ke dalam daging labu dan setiap piksel akan kurang jelas.

Tambahkan lapisan bungkus plastik ke bagian atas joystick, dengan poros itu sendiri menyembul. Ini akan menjaga setidaknya sedikit kelembapan agar tidak merembes ke dalamnya. Pasang joystick dengan sekrup 1/2 ke dalam jangkar drywall. Sekrup yang disertakan dengan jangkar akan terlalu panjang dan akan menusuk labu.

Langkah 10: Memainkan Game

Memainkan Game
Memainkan Game

Letakkan mangkuk atau wadah penyimpanan makanan plastik di bagian bawah labu agar barang elektronik yang menggantung tidak menyentuh bagian bawah. Colokkan joystick ke Arduino Anda, ransel LED ke Arduino, dan matriks LED ke ransel. Colokkan sumber daya ke Arduino Anda. Sekarang mainkan sendiri Labu!Ide untuk Eksplorasi Lebih Lanjut Daripada memasang joystick di bagian atas labu dengan LED, Anda dapat menggunakan labu jarak jauh, baik secara nirkabel atau dengan kabel yang dihias agar terlihat seperti pokok anggur. Alih-alih permainan, Anda dapat menampilkan pesan bergulir di jack-o-lantern Anda. Anda mungkin ingin memasang matriks ke samping (lebar 16 kali 8 tinggi), atau bahkan hanya menggunakan satu matriks. Pembusukan yang Tak Terelakkan Labu Anda pada akhirnya akan mulai membusuk dan menumbuhkan jamur dan jamur. Ini bisa berbahaya bagi kesehatan Anda dan dapat menyebabkan gangguan pada elektronik Anda. Yang terbaik adalah mencabut semua barang elektronik Anda setelah Anda melihat adanya pertumbuhan pada atau di dalam labu, sehingga Anda dapat menggunakannya kembali nanti tanpa memerlukan pembersihan Haz-Mat.

Kontes Dekorasi Halloween
Kontes Dekorasi Halloween
Kontes Dekorasi Halloween
Kontes Dekorasi Halloween

Hadiah Kedua dalam Kontes Dekorasi Halloween

Direkomendasikan: