Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pac-Man LED Pixel Panel Costume

Komponen dan persediaan

Arduino UNO
× 1

Alat dan mesin yang diperlukan

Pemotong laser (generik)
Tidak *diperlukan* tetapi sangat membantu

Tentang proyek ini

Pendahuluan

Pertama, katakan yang sudah jelas:kami suka membuat kostum keluarga.

Tahun lalu kami membuat "alien" luar angkasa yang benar-benar lebih mirip orang yang berpakaian perak dengan aksen strip LED. Kami sangat menyukai LED karena unik dan membuat anak-anak mudah dilihat saat mereka berlarian di malam hari. Kami memutuskan untuk melakukan sesuatu yang menyala lagi, tetapi tidak yakin apa. Putri saya yang menyarankan Pac-Man, karena dia baru saja memainkan permata Namco di arena bowling beberapa minggu sebelumnya. Hanya saran itu yang kami butuhkan. Itu adalah ide bagus dan kami harus mewujudkannya.

Perencanaan

Langkah pertama selalu perencanaan, tapi perlu diperhatikan, terutama jika Anda ingin melakukan karakter 8-bit yang berbeda.

Kami memilih karakter Pac-Man untuk keluarga. Pac-Man, Ms. Pac-Man, dan hantu Blinky dan Pinky. Saya ingin itu akurat dan autentik dengan karakter 8-bit asli, jadi saya mulai dengan mencari sprite game asli.

Ini membantu memastikan kami mendapatkan tata letak piksel piksel yang benar dan menunjukkan setiap bingkai animasi. Misalnya, Anda dapat melihat bingkai yang berbeda dari kaki hantu dan mulut Pac-Man pada sprite di atas.

Saya kemudian meletakkan setiap bingkai animasi di Excel sehingga kami tahu di mana jumlah LED dan tata letak keseluruhan setiap papan. Nomor individu LED diperlukan nanti untuk memprogram papan Arduino.

Anda dapat melihat dari tata letak bahwa Ghosts memiliki tinggi 14 piksel dengan lebar 14 piksel. Pac-Man berukuran 13x13 dan Ms.Pac-Man berukuran 14x14.

Setelah kita mengetahui lebar dan tinggi dengan piksel, kita harus memutuskan seberapa besar kita ingin membuat panel. Saya ingin mereka semua memiliki ukuran yang sama relatif satu sama lain. Artinya setiap piksel akan memiliki ukuran yang sama pada setiap kostum. Untuk mengukurnya dengan benar, kami mulai dengan memastikan ukurannya tepat untuk anggota keluarga terkecil, putraku. Saya mengukurnya dan mengangkat beberapa potongan karton untuk melihat ukuran berapa dia masih bisa dengan nyaman meletakkan tangannya dan masih berjalan. Kami berakhir di 22" sebagai ukuran tinggi dan lebar hantu.

Itu mengatur skala kami 22" / 14 piksel =1,57"/piksel.

Bahan

Kami ingin kostumnya relatif mudah dipakai, jadi kami memilih bahan yang ringan daripada yang tahan lama.

  • Dasar: 1/8" karton, potong laser dan lem panas
  • Sampul Transparan: Kertas Gambar (Vellum atau Mylar)
  • LED : 12mm DC5V WS2811 LED yang Dapat Dialamatkan Secara Individual (String 50)
  • Dewan: Arduino Uno R3
  • Kekuatan: Catu Daya Portabel 5V DC (Seperti pengisi daya ponsel portabel) + Adaptor USB ke DC
  • Lain-lain: Adaptor Jack Daya DC Kabel jumper papan tempat memotong roti DC5V Power Supply, untuk pengujian Velcro Woven Duct Strap Duct Tape

Pangkalan

Untungnya saya memiliki akses ke pemotong laser, jadi saya tahu saya akan menggunakannya untuk membuatnya. Anda tidak perlu pemotong laser Anda sendiri. Anda dapat mengirimkannya untuk dipotong oleh perusahaan yang melakukan pemotongan laser, atau Anda dapat menggunakan rute manual dan mencetak PDF dan meletakkannya di atas karton dan memotongnya dengan tangan.

Alasnya terbuat dari lembaran karton berukuran 1/8" yang dibeli dari toko seni/hobi setempat. Pemotong laser kami memiliki tempat tidur 32"x18", jadi saya meminta mereka memotong seprai hingga ukuran tersebut.

Panel Panel terdiri dari beberapa bagian utama:alas, bilah, penutup, dan tali. Bagian dasar menahan LED, papan tulis memberikan piksel dan stabilitas keseluruhan panel, penutup menyebarkan cahaya, dan tali membuatnya portabel.

Pemodelan

Untuk membuat file untuk pemotong laser, saya membuat model dasarnya menggunakan Rhino. Saya memodelkan semua bagian panel dengan sangat akurat agar pemotong laser bekerja semaksimal mungkin.

Saya membuat setiap panel sehingga masing-masing sirip vertikal dan horizontal akan saling bergeser dan mereka akan berlekuk juga ke alasnya. Menyetelnya dengan cara ini memungkinkan bagian-bagian panel saling bergeser dan membentuk takik tanpa perlu banyak lem, sekaligus memastikan kita akan mendapatkan kotak yang sempurna untuk piksel.

Pemotongan Laser

Seperti disebutkan sebelumnya pemotong laser kami adalah 32"x18" sehingga file CAD yang saya buat untuk melakukan pemotongan laser diatur pada ukuran itu. Saya telah menambahkan file .dwg untuk kostum Ghost. Anda dapat menggunakannya untuk memotong sendiri dengan laser, atau Anda dapat mencetaknya dan menggunakannya sebagai template untuk memotong karton dengan tangan.

Jika Anda akan melakukannya dengan tangan, Anda dapat dengan mudah meletakkannya dan memotong potongan karton. Anda dapat mengukurnya sendiri, pikselnya sekitar 1,5" persegi dan kedalaman 2" dengan lubang 12mm di tengah untuk LED. Anda juga dapat menggunakan PDF yang disediakan sebagai template untuk memotong.

Perakitan

Basis harus dipotong menjadi dua bagian karena ukuran kecil tempat tidur pemotong laser kami adalah 18", yang lebih kecil dari dimensi alas 22" x 22". Saya menggunakan selotip yang bagus pada sambungan untuk menyatukannya pada awalnya. Ini benar-benar untuk mempertahankannya saat menambahkan LED dan slat. Setelah slat ditambahkan ke alas, mereka memberikan dukungan dan stabilitas nyata.

Setiap bilah diberi label dengan memberi skor "H#" atau "V#" untuk Horizontal (H) dan Vertikal (V) dan nomor (#) yang berurutan. Bilah meluncur bersama dengan baik karena kami menambahkan jarak tambahan 1/32". Pengujian pertama saya menyisakan lebih sedikit ruang di mana mereka meluncur bersama dan membuat tidak mungkin untuk menyatukan semuanya. Setelah semua digeser bersama, kami meletakkan bilah di alas Mereka berlekuk di mana tanda plus berbentuk lubang di pangkalan. Setelah itu di pangkalan, saya menempelkan bilah ke alas di ujungnya. Kemudian saya menambahkan manik kecil lem panas di sudut kiri atas tempat bilah bertemu untuk menjaganya tetap di tempatnya dan memastikannya tidak tergelincir.

Takik untuk bilah memanjang melalui alas sehingga ada tab kecil di bagian belakang alas. Saya juga menambahkan manik lem panas ke tab ini untuk menjaga bilah tetap aman di alasnya.

Setelah dipikir-pikir

Seperti yang Anda lihat dalam diagram model 3d, saya tidak merencanakan penutup di bagian belakang panel. Ini adalah kesalahan! Saya melihat ini beberapa jam sebelum centang-atau-perawatan dan saya buru-buru memotong 2,5" karton strip dan menambahkannya ke bagian belakang panel. untuk memberikan sesuatu selain kabel LED untuk bersandar pada tubuh.

Ini membantu, tetapi sebenarnya itu seharusnya tertutup sepenuhnya. Saat berjalan-jalan dengan panel dengan bagian belakang terbuka, LED cenderung masuk. Anda dapat melihat di beberapa gambar di mana piksel tidak lagi benar-benar piksel, tetapi lampu titik. Di sinilah LED didorong atau jatuh. Saya menghentikan keluarga beberapa kali untuk memperbaikinya sepanjang malam atau mencentang-atau-mengobati.

Tata Letak LED

Perencanaan untuk string LED terjadi di Excel di mana saya meletakkan 170 LED individu dalam urutan 0-169 untuk Ghosts.

Tata Letak Excel

Hal penting yang perlu diperhatikan adalah jarak antara piksel dan titik awal.

Jika Anda tidak ingin memotong dan memasang kembali lampu yang sudah dipasang sebelumnya, Anda perlu memastikan bahwa Anda dapat menjangkau dari satu lubang ke lubang lainnya secara berurutan. Dalam kasus saya, jarak antara masing-masing LED pada bundel yang dipasang sebelumnya adalah sekitar 3 inci (75mm). Ini berarti piksel harus berdekatan satu sama lain saat meletakkannya.

Untuk titik awal, pastikan lokasinya dekat dengan tempat Anda dapat memasang Arduino dan catu daya.

Menempatkan LED

Mengikuti pola yang ada di Excel, kami mendorong LED dari belakang ke tempatnya di karton.

LED memiliki flensa kecil yang membuat mereka tetap di tempatnya. Saya menemukan bahwa kardusnya agak tipis sehingga LED sedikit bergerak ketika berjalan-jalan. Jika Anda ingin menyimpannya di tempatnya dengan lebih aman, Anda bisa mengoleskan lem panas di atasnya.

Pengkabelan

Sumber Daya

Cara terbaik untuk menyalakannya adalah dengan baterai isi ulang 5V DC (alias:pengisi daya telepon portabel). Kemudian gunakan adaptor USB ke DC untuk dicolokkan ke lampu Anda yang sekarang harus disambungkan dengan adaptor DC perempuan.

Saya membuat kesalahan dan menggunakan Paket Baterai 8xAA dengan sakelar Nyala/Mati yang saya miliki dari kostum tahun sebelumnya. Hanya saat menulis ini saya menyadari itu memiliki output 12V dan saya menggunakan LED 5V. (Saya bukan ahli bedah roket tapi saya pikir ini buruk). Karena saya memiliki baterai, saya hanya mengambilnya dan mencolokkannya dan semuanya bekerja dan saya tidak menebaknya \_(ツ)_/¯

Cukup menarik bahwa paket baterai yang saya gunakan hanya memberi kami waktu sekitar 2 jam. Setelah mengetahui bahwa itu adalah catu daya yang salah untuk panel, saya menguji panel dengan pengisi daya telepon portabel 5VDC yang benar dan itu bertahan lebih lama.

Saya menguji pengisi daya portabel 2200 mAh dan 7800 mAh dan panel masing-masing berjalan selama 3 jam 40 m dan 12 jam 43 m. Artinya, dengan "pengisi daya lipstik" yang murah, Anda bisa mendapatkan hampir 4 jam tepat waktu.

LED

Saya menggunakan string 12mm WS2811 LED yang dapat dialamatkan secara individual untuk signage luar ruangan. Saya membelinya di Amazon dan jumlahnya berjumlah 50.

Pengkabelan

Pengkabelan daya ke lampu dan kemudian ke papan dilakukan seperti yang ditunjukkan pada diagram dan foto.

Lead LED pada string pertama memiliki daya dalam sambungan, ada dua kabel (panas/merah dan ground/putih). Ini terhubung ke adaptor colokan listrik wanita. Catu daya dicolokkan ke adaptor ini. Kemudian kita sambungkan daya, ground, dan data dari LED pertama yang terhubung ke koneksi 5v dan GND di Arduino dan kabel DATA (tengah) terhubung ke 3 PIN di board.

Pastikan Anda memeriksa rangkaian LED Anda sebelum memasangnya. Kabel LED saya berwarna Merah(5V), Hijau (DATA), Putih(GND), tetapi kabel Anda mungkin berbeda.

Kode

Setelah Anda memasang semua kabel, lampu tidak akan melakukan apa pun saat Anda mencolokkannya. Mungkin lampu akan berkedip sebentar. Mereka perlu diberi tahu apa yang harus dilakukan terlebih dahulu dan beginilah cara saya melakukannya.

Saya tidak membahas cara memprogram papan Arduino. Jika Anda tidak tahu bagaimana melakukannya, ada artikel bagus di Situs Web Arduino:Memulai dengan Arduino

LED Cepat

Saya menggunakan perpustakaan FastLED untuk ini. Mudah digunakan dan mudah untuk menemukan contoh untuk membantu mencari tahu semuanya. Sangat berguna bahwa mereka menggunakan Warna Web sehingga Anda dapat menyetel LED apa pun ke warna apa pun dengan menggunakan namanya.

Kode Saya

Di bawah ini adalah kode Ghost, saya juga sudah mengupload file kode Arduino.

Garis dasar logika adalah untuk mengisi semua LED dengan warna utama, kemudian mengubah warna, dan mematikan set LED individu untuk membuat setiap "bingkai". Setelah kami memiliki satu set untuk setiap "bingkai" animasi, kami mengulanginya dengan kecepatan X X beberapa kali untuk membuat keseluruhan animasi. Mungkin ada cara yang lebih cerdas untuk melakukan ini, tetapi inilah cara saya melakukannya dan berhasil untuk saya.

Tambahkan Sampul

Saya sarankan meninggalkan penutup sampai akhir karena terbuat dari kertas dan dapat robek. Juga berguna untuk menjangkau LED dari depan saat Anda memasangnya atau melakukan penyesuaian.

Saya menggunakan gulungan kertas kalkir yang saya miliki tergeletak di sekitar. Saya cukup yakin itu vellum, tapi mungkin mylar. Apa pun yang Anda inginkan, gunakan kertas tembus pandang yang cukup lebar untuk menutupi semuanya sehingga Anda tidak perlu berurusan dengan jahitan. Anda bisa mendapatkan gulungan kertas kalkir di toko seni atau online.

Untuk menjaga kertas tetap di tempatnya, saya meletakkan garis lem Elmers tua biasa di sepanjang tepi atas sirip vertikal. Saya tidak melakukan yang horizontal karena yang Anda butuhkan hanyalah kertas tetap di tempatnya. Menjaga kertas tetap menempel memastikan kisi-kisi terbaca dan membuat panel terlihat seperti piksel individu.

Setelah Anda mendapatkan lem, letakkan kertas di atasnya dan letakkan buku atau sesuatu yang berat di atasnya agar lem tetap di tempatnya dan biarkan lem menempel.

Setelah lem mengeras, Anda dapat memotong sisa kertas. Sisakan sedikit kertas di sekitar tepinya untuk dilipat dan direkatkan, ini membantu memastikan tepinya tidak terkelupas atau terlepas.

Siap Jalan

Untuk langkah-langkah penyelesaian, kami menyiapkannya untuk digunakan di jalan.

  • Pasang Arduino dan catu daya ke belakang dengan Velcro
  • Rekatkan sambungan agar tidak lepas
  • Tambahkan tali untuk membawanya kemana-mana. Saya menggunakan anyaman tali saluran untuk ini (seperti kertas kalkir yang saya miliki).
  • Muat beberapa musik Pac-Man dan efek suara di ponsel Anda dan bawa speaker bluetooth

Untung

Setelah semuanya selesai, Anda dapat mengirim keluarga 8-bit Anda ke lingkungan sekitar untuk mengesankan para tetangga dan mengumpulkan keuntungan permen manis Anda.

Terima kasih sudah membaca! Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya!

Kode

  • Kode Animasi Hantu LED
  • MsPacman
  • Pacman
Kode Animasi Hantu LEDArduino
Kode ini menjalankan animasi untuk Ghosts
//ANIMATED PACMAN GHOST LED#include "FastLED.h"#define NUM_LEDS 170#define DATA_PIN 3CRGB leds[NUM_LEDS];void setup() { delay(2000); FastLED.addLeds(led, NUM_LEDS); FastLED.setBrightness(40); //Nomor 0-255 FastLED.clear();}//melihat ke kiriint eyes_pixels_l[] ={17, 20, 21, 24, 37, 38, 39, 40, 41, 47, 48, 49, 94, 102, 103, 106, 119, 120, 121, 122, 123, 129, 130, 131};int pupil_pixels_l[] ={15, 16, 22, 23, 92, 93, 104, 105};//tampak kananint eyes_pixels_r[ ] ={38, 39, 40, 46, 47, 48, 49, 50, 63, 66, 67, 75, 120, 121, 122, 128, 129, 130, 131, 132, 145, 148, 149, 152 };int pupil_pixels_r[] ={64, 65, 76, 77, 146, 147, 153, 154};//menghapus piksel di sekitar kakiint void_pixels_1[] ={8, 29, 30, 31, 83, 84, 85, 86, 138, 139, 140, 161};int void_pixels_2[] ={7, 31, 55, 56, 57, 112, 113, 114, 138, 162};int sad_ghost[] ={11, 26, 35, 48, 49, 53, 60, 64, 65, 80, 89, 104, 105, 109, 116, 120, 121, 134, 143, 158};int eyes_seconds =2;int reg_ghost_seconds =10;int feet_delay =120; //penundaan dalam ms b/w kaki v1 v2int eye_loop =(eyes_seconds*1000)/feet_delay; // berapa kali melihat ke kiri dan ke kanan sebelum beralih int reg_ghost_loop =reg_ghost_seconds/eyes_seconds; int sad_ghost_loop =50;int sad_ghost_blink_loop =10;void loop() { for(int i =0; i  
MsPacmanArduino
//ANIMATED MS PACMAN LED#termasuk "FastLED.h"#menentukan NUM_LEDS 151#menentukan DATA_PIN 3CRGB leds[NUM_LEDS];void setup() { delay(2000); FastLED.addLeds(led, NUM_LEDS); FastLED.setBrightness(40); //Nomor 0-255 FastLED.clear();}int void_pixels_opened[] ={6,7,22,23,24,25,26,27,28,29,30,43,44,45,46,47 ,48,49,50, 51,52,53,54,55,56,57,58,68,69,70,71,72,73,74,75,76,77, 78,79,80,81 ,82,83,84,85,86,98,99,100,101,102,103,104, 105,106,107,108,109,127.128,129,130,131,132};int void_pixels_mid[] ={5,150,45,46,47,48,49,50,51,52,53,54,55,56, 57,58,68,69,70,71,72, 73,74,75,76,77,78,79,80,81,82,83,84,85,100,101,102,103,104};int void_pixels_closed[] ={5,150}; int red_opened [] ={92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,5,8,133,150}; int red_mid [] ={92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,27,26,105,106}; int red_closed [] ={92,93,115,116,117,118,119,121,137,138,140,141,142,143,144,145,50,76,77,78}; int blue_opened[] ={120,139,96};int blue_mid[] ={120,139,97};int blue_closed[] ={120,139};int black_opened[] ={40,95,111,112,124};int black_mid[] ={40,96,110,111 };int black_closed[] ={40,95,96,97,98};int frame_rate_ms =100;void loop() {//----MULUT TERBUKA- ---////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow);//hapus mulut untuk (int i =0; saya <64; i++){ leds[void_pixels_opened[i]] =CRGB::Black;}//set redfor (int i =0; i <20; i++){ leds[red_opened[i]] =CRGB::Red;}// set bluefor (int i =0; i <3; i++){ leds[blue_opened[i]] =CRGB::Blue;}//set blackfor (int i =0; i <5; i++){ leds[black_opened[ i]] =CRGB::Ungu;}FastLED.show();delay(frame_rate_ms);//----MOUTH MID----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //hapus mouthfor (int i =0; i <39; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}//set redfor (int i =0; i <20; i++){ leds[ red_mid[i]] =CRGB::Red;}//set bluefor (int i =0; i <3; i++){ leds[blue_mid[i]] =CRGB::Blue;}//set blackfor (int i =0; i <4; i++){ leds[black_mid[i]] =CRGB::Ungu;}FastLED.show();delay(frame_rate_ms);//----MULUT TUTUP----/// /fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //mouthfor (int i =0; i <2; i++){ leds[void_pixels_closed[i]] =CRGB::Black;}//set redfor (int i =0; i <20; i++){ leds[red_closed [i]] =CRGB::Red;}//set bluefor (int i =0; i <2; i++){ leds[blue_closed[i]] =CRGB::Blue;}//set blackfor (int i =0; i <5; i++){ leds[black_closed[i]] =CRGB::Ungu;}FastLED.show();delay(frame_rate_ms);//----MOUTH MID----//// isi bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow);//hapus mouthfor (int i =0; i <39; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}//set redfor (int i =0; i <20; i++){ leds[red_mid[i]] =CRGB::Red;}//set bluefor (int i =0; i <3; i++){ leds[blue_mid[i]] =CRGB::Blue;}//set blackfor (int i =0; i <4; i++){ leds[black_mid[i]] =CRGB::Purple;}FastLED.show();delay(frame_rate_ms);} 
PacmanArduino
//ANIMATED PACMAN LED#termasuk "FastLED.h"#menentukan NUM_LEDS 137#menentukan DATA_PIN 3CRGB leds[NUM_LEDS];void setup() { delay(2000); FastLED.addLeds(led, NUM_LEDS); FastLED.setBrightness(40); //Nomor 0-255 FastLED.clear();}int void_pixels_opened[] ={19,20,21,22,23,24,25,26,27,28,29,42,43,44,45,46 ,47,48,49,50,51,52,53,54,55, 56,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80 ,81,82,94,95,96,97,98,99,100, 101,102,103,104,105,121,122,123,124,125,126};int void_pixels_mid[] ={46,47,48,49,50,51,52,53,54,66,67,68, 69,70,71,72,73,74,75,76,77,78,79,80,98,99,100};int frame_rate_ms =100;void loop() {//----MULUT TERBUKA--- -////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow);//hapus mouthfor (int i =0; i <61; i++){ leds[void_pixels_opened[i]] =CRGB::Black;}FastLED .show();delay(frame_rate_ms);//----MOUTH MID----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //hapus mouthfor (int i =0; i <27; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}FastLED.show();delay(frame_rate_ms);//----MULUT TUTUP ----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); FastLED.show();delay(frame_rate_ms);//----MOUTH MID----////fill bodyfill_solid(leds, NUM_LEDS, CRGB::Yellow); //hapus mulut untuk (int i =0; i <27; i++){ leds[void_pixels_mid[i]] =CRGB::Black;}FastLED.show();delay(frame_rate_ms);}

Suku cadang dan penutup khusus

File untuk memotong kostum hantu dengan laser dari karton 1/8". Ini disiapkan untuk ukuran tempat tidur pemotong laser 32" x 18". ghostlaser-1_8th_v5_feTmMAM4r0.dwgFile DWG pemotong laser untuk Ms. Pacman dan Pacman pacman-mspacman-laser_KVFskMrPk4.dwg

Skema

Cara memasang LED, Ardunio, dan daya portabel

Proses manufaktur

  1. Light-Emitting Diode (LED)
  2. Panel LCD dengan Arduino untuk Simulator Penerbangan
  3. Beralih/Panel LED dengan Arduino untuk FS2020
  4. Coffin Dance Melody
  5. Kostum Cloud
  6. Kubus LED 5x5x5
  7. Arduino dengan Bluetooth untuk Mengontrol LED!
  8. 8x Pencahayaan LED dengan Suara
  9. Arduino Quadruped
  10. Game Pixel Chaser