Kostum Panel Pixel LED Pac-Man DIY: Klasik Halloween yang Bersinar dalam Gelap
Bahan dan Perlengkapan
Berikut adalah komponen yang diperlukan untuk membangun kostum panel pixel LED Pac-Man:
Alat dan Mesin yang Diperlukan
Alat berikut direkomendasikan untuk proyek ini:
| Penggera laser (umum) | Tidak diperlukan, namun sangat membantu |
Tentang Proyek
Pertama-tama, kami menyukai kostum keluarga.
Tahun lalu kami membuat kostum "alien" luar angkasa yang sebenarnya lebih seperti orang berpakaian perak dengan aksen pita LED. Kami sangat suka LED karena mereka unik dan memudahkan anak-anak terlihat saat berlari di malam hari. Kami memutuskan untuk membuat sesuatu yang menyala lagi, namun belum yakin apa. Itu adalah anak saya yang menyarankan Pac-Man, karena ia baru saja bermain gem Namco di sebuah bowling lane beberapa minggu sebelumnya. Saran itu semua yang kami butuhkan. Itu ide bagus dan kami harus mewujudkannya.
Perencanaan
Langkah pertama selalu perencanaan, namun perlu dicatat, terutama jika Anda ingin membuat karakter 8-bit yang berbeda.
Kami memilih karakter Pac-Man untuk keluarga. Pac-Man, Ms. Pac-Man, dan hantu Blinky serta Pinky. Saya ingin akurat dan autentik dengan karakter 8-bit asli, jadi saya mulai mencari sprite game asli.
Sprite ini membantu memastikan tata letak piksel yang benar dan menunjukkan setiap frame animasi. Misalnya, Anda dapat melihat frame berbeda dari kaki hantu dan mulut Pac-Man dalam sprite di atas.
Saya kemudian menata setiap frame animasi di Excel sehingga kami tahu jumlah LED dan tata letak keseluruhan setiap papan. Angka individu LED diperlukan nanti untuk memrogram papan Arduino.
Dari tata letak, Anda dapat melihat bahwa hantu berukuran 14 piksel tinggi oleh 14 piksel lebar. Pac-Man berukuran 13x13 dan Ms. Pac-Man berukuran 14x14.
Setelah mengetahui lebar dan tinggi dalam piksel, kami harus memutuskan seberapa besar kami ingin membuat panel. Saya ingin semuanya berukuran sama satu sama lain. Artinya setiap piksel akan berukuran sama pada setiap kostum. Untuk menskalanya dengan benar, kami mulai dengan memastikan ukurannya tepat untuk anggota keluarga terkecil, anak saya. Saya mengukurnya dan memegang beberapa potongan karton untuk melihat ukuran apa yang masih dapat dilakukan dengan nyaman dengan lengan di atas dan masih dapat berjalan. Akhirnya kami mencapai 22 inci sebagai ukuran hantu dalam tinggi dan lebar.
Itu menetapkan skala kami: 22 inci / 14 piksel = 1,57 inci/piksel.
Bahan
Kami ingin kostum relatif mudah dipakai, jadi kami memilih bahan ringan daripada bahan tahan lama.
- Dasar: karton 1/8 inci, dipotong laser dan dilekatkan dengan lem panas
- Penutup Translusen: Kertas Gambar (Vellum atau Mylar)
- LED: 12mm DC5V WS2811 Individually Addressable LEDs (Rantai 50)
- Papan: Arduino Uno R3
- Daya: 5V DC Portable Power Supply (seperti charger telepon portabel) + USB to DC Adapter
- Lain-lain: DC Power Jack Adapters, kabel jumper breadboard, DC5V Power Supply untuk pengujian, Velcro, Woven Duct Strap, Duct Tape
Dasar
Untungnya saya memiliki akses ke penggera laser, jadi saya tahu saya akan menggunakannya untuk membuat ini. Anda tidak memerlukan penggera laser sendiri. Anda dapat mengirimnya untuk dipotong oleh perusahaan yang melakukan pemotongan laser, atau Anda dapat mencetak PDF dan menaruhnya pada karton lalu memotongnya dengan tangan.
Dasar terbuat dari lembar karton 1/8 inci yang dibeli di toko seni/hobi lokal. Penggera laser kami memiliki tempat kerja 32x18 inci, jadi saya meminta mereka memotong lembar sesuai ukuran itu.
Panel Panel terdiri dari beberapa bagian utama: dasar, slat, penutup, dan tali pengikat. Dasar memegang LED, slat menyediakan piksel dan stabilitas keseluruhan panel, penutup menyebarkan cahaya, dan tali pengikat membuatnya dapat dibawa.
Modelling Untuk membuat file untuk penggera laser, saya memodelkan dasar menggunakan Rhino. Saya memodelkan semua bagian panel sangat akurat dalam upaya untuk membiarkan penggera laser melakukan sebanyak mungkin pekerjaan.
Saya membuat setiap panel sehingga setiap fin vertikal dan horizontal akan masuk ke dalam satu sama lain dan mereka juga akan mengkerucut ke dasar. Menyetelnya dengan cara ini memungkinkan bagian panel untuk masuk dan mengkerucut bersama tanpa perlu banyak lem, sambil juga memastikan kami mendapatkan persegi sempurna untuk piksel.
Pemotongan Laser Seperti yang disebut sebelumnya, penggera laser kami berukuran 32x18 inci, jadi file CAD yang saya buat untuk pemotongan laser disetel pada ukuran itu. Saya telah menambahkan file .dwg untuk kostum Hantu. Anda dapat menggunakannya untuk memotong laser sendiri, atau Anda dapat mencetaknya dan menggunakannya sebagai templat untuk memotong karton dengan tangan.
Jika Anda akan melakukannya dengan tangan, Anda dapat dengan mudah menata ini dan memotong strip karton. Anda dapat mengukurnya sendiri, pikselnya berukuran sekitar 1,5 inci persegi dan 2 inci dalam dengan lubang 12mm di tengah untuk LED. Anda juga dapat menggunakan PDF yang disediakan sebagai templat untuk memotong.
Penggabungan Dasar harus dipotong menjadi dua bagian karena dimensi kecil tempat kerja penggera laser kami adalah 18 inci, yang lebih kecil dari dimensi dasar 22x22 inci. Saya menggunakan kawat pita di gabungan untuk menjaga tetap bersama pada awalnya. Ini benar-benar untuk menjaga tetap saat menambahkan LED dan slat. Setelah slat ditambahkan ke dasar, mereka memberikan dukungan dan stabilitas nyata.
Setiap slat diberi label dengan mengikis "H#" atau "V#" untuk Horizontal (H) dan Vertikal (V) dan nomor (#) dalam urutan. Slat masuk dengan baik karena kami menambahkan clearanse tambahan 1/32 inci. Pengujian pertama saya menghasilkan ruang yang jauh lebih sedikit tempat mereka masuk dan membuatnya mustahil untuk menyatukan semuanya. Setelah semuanya masuk, kami meletakkan slat pada dasar. Mereka mengkerucut di tempat lubang berbentuk tanda plus di dasar. Setelah berada pada dasar, saya menempelkan slat ke dasar di ujung-ujungnya dengan kawat pita. Kemudian saya menambahkan titik lem panas kecil di sudut kiri atas tempat slat bertemu untuk menjaga tetap dan memastikan mereka tidak meleset.
Kerucut untuk slat melintasi dasar sehingga ada tab kecil di bagian belakang dasar. Saya juga menambahkan titik lem panas pada tab-tab ini untuk menjaga slat tetap aman pada dasar.
Pikiran Terakhir Seperti yang Anda lihat dalam diagram model 3D, saya tidak merencanakan penutup di bagian belakang panel. Ini adalah kesalahan! Saya menyadari ini beberapa jam sebelum trick-or-treating dan saya buru-buru memotong strip karton 2,5 inci dan menambahkannya ke bagian belakang panel untuk memberi sesuatu selain kabel LED untuk menempel pada tubuh.
Ini membantu, tetapi sebenarnya seharusnya telah tertutup sepenuhnya. Saat berjalan dengan panel dengan bagian belakang terbuka, LED cenderung terencet. Anda dapat melihat di beberapa gambar di mana piksel tidak lagi benar-benar piksel, tetapi titik cahaya. Ini di mana LED terencet atau jatuh masuk. Saya menghentikan keluarga beberapa kali untuk memperbaiki ini sepanjang malam trick-or-treating.
Tata Letak LED
Perencanaan untuk rantai LED dilakukan di Excel di mana saya menata 170 LED individual dalam urutan dari 0-169 untuk Hantu.
Tata Letak Excel
Hal-hal penting yang perlu diperhatikan adalah jarak antara piksel dan titik awal.
Jika Anda tidak ingin memotong dan menyambung kembali lampu yang telah dirajut, Anda perlu memastikan Anda dapat mencapai dari satu lubang ke lubang lainnya dalam urutan Anda. Dalam kasus saya, jarak antara LED individual pada rantai yang telah dirajut sekitar 3 inci (75mm). Ini berarti piksel harus berdekatan satu sama lain saat menempatkannya.
Untuk titik awal, pastikan itu dekat dengan tempat Anda dapat memasang Arduino dan supply daya.
Menempatkan LED
Mengikuti pola yang telah ditata di Excel, kami mendorong LED dari bagian belakang ke tempat dalam karton.
LED memiliki flens kecil yang menjaga tetap. Saya menemukan karton sedikit rapuh jadi LED bergerak sedikit saat berjalan. Jika Anda ingin menjaga tetap lebih aman, Anda dapat menambahkan sejumlah lem panas pada mereka.
Penyambungan
Sumber Daya Cara terbaik untuk menyediakan daya adalah dengan baterai rechargeable 5V DC (alias: charger telepon portabel). Kemudian gunakan USB to DC adapter untuk menyetokkan lampu Anda yang sekarang harus telah disambungkan dengan adapter DC female.
Saya melakukan kesalahan dan menggunakan Baterai 8xAA dengan saklar On/Off yang saya miliki dari kostum tahun lalu. Hanya saat menulis ini saya menyadari bahwa itu memiliki output 12V dan saya menggunakan LED 5V. Karena saya memiliki baterai sekitar, saya hanya mengambilnya dan menyetokkannya dan semuanya berfungsi dan saya tidak meragukannya.
Menariknya, baterai yang saya gunakan hanya memberi kami sekitar 2 jam waktu menyala. Setelah menemukan bahwa mereka adalah sumber daya yang salah untuk panel, saya menguji panel dengan charger telepon portabel 5VDC yang benar dan mereka bertahan jauh lebih lama.
Saya menguji charger portabel 2200 mAh dan 7800 mAh dan panel berjalan selama 3 jam 40 menit dan 12 jam 43 menit masing-masing. Ini berarti dengan charger "lipstick" murah Anda dapat mendapat hampir 4 jam waktu menyala.
LED Saya menggunakan rantai LED 12mm WS2811 yang dapat dialamat individual untuk papan reklame luar ruangan. Saya membelinya di Amazon dan mereka datang dalam rantai 50.
Penyambungan Penyambungan daya ke lampu dan kemudian ke papan dilakukan seperti yang ditunjukkan dalam diagram dan foto.
LED utama pada rantai pertama memiliki koneksi daya masuk, ada dua kabel (panas/merah dan ground/putih). Ini disambungkan ke adapter jack daya female. Sumber daya diplug ke adapter ini. Kemudian kami menyambungkan daya, ground, dan data dari LED pertama tersebut ke koneksi 5v dan GND pada Arduino dan kabel DATA (tengah) terhubung ke PIN 3 pada papan.
Pastikan Anda memeriksa rantai LED Anda sebelum menyambungkannya. Kabel LED saya adalah Merah(5V), Hijau (DATA), Putih(GND), tetapi milik Anda mungkin berbeda.
Kode
Setelah semua disambungkan, lampu tidak akan melakukan apa-apa saat Anda menyetokkannya. Mungkin mereka akan berkedip sebentar. Mereka perlu diberitahu apa yang harus dilakukan terlebih dahulu dan inilah caranya saya lakukan.
Saya tidak membahas cara memrogram papan Arduino. Jika Anda tidak tahu caranya, ada artikel bagus di Situs Web Arduino: Getting Started with Arduino
FastLED Saya menggunakan library FastLED untuk ini. Mudah digunakan dan mudah menemukan contoh untuk membantu memahami semuanya. Berguna bahwa mereka menggunakan Web Colors sehingga Anda dapat mengatur setiap LED ke warna apa pun dengan menggunakan nama.
Kode Saya Berikut adalah kode untuk Hantu, saya juga telah mengunggah file kode Arduino.
Garis besar dasar untuk logika adalah mengisi semua LED dengan warna utama, kemudian mengubah warna, dan mematikan set LED individual untuk membuat setiap "frame". Setelah kita memiliki set untuk setiap "frame" animasi, kita melalui mereka pada kecepatan X jumlah kali untuk membentuk seluruh animasi. Mungkin ada cara yang lebih cerdas untuk melakukannya, tetapi inilah caranya saya lakukan dan berhasil untuk saya.
Tambahkan Penutup
Saya merekomendasikan meninggalkan penutup ke akhir karena terbuat dari kertas dan dapat robek. Juga berguna dapat mencapai LED dari depan saat Anda menempatkannya atau melakukan penyesuaian.
Saya menggunakan gulungan kertas gambar yang saya miliki. Saya cukup yakin itu vellum, tetapi mungkin mylar. Baiklah apa yang Anda inginkan adalah kertas translusen yang lebar cukup untuk menutupi seluruhnya sehingga Anda tidak perlu menangani geraguk. Anda dapat mendapatkan gulungan kertas gambar di toko seni atau online.
Untuk menjaga kertas tetap, saya menaruh garis lem Elmer biasa di sepanjang tepi atas fin vertikal. Saya tidak melakukannya pada yang horizontal karena yang Anda butuhkan hanyalah kertas tetap sebagian besar. Menempelkan kertas memastikan grid dapat dibaca dan membuat panel terlihat seperti piksel individual.
Setelah Anda meletakkan lem, letakkan kertas di atas dan letakkan buku atau sesuatu yang cukup berat di atas untuk menjaga tetap dan biarkan lem mengering.
Setelah lem mengering, Anda dapat memotong kertas berlebih. Biarkan sedikit kertas tambahan di sekitar tepi untuk dilipat dan ditempelkan ke bawah, ini membantu memastikan tepi tidak akan mengupas atau longgar.
Siap Digunakan
Untuk langkah akhir, kita menyiapkannya untuk berjalan.
- Pasang Arduino dan sumber daya di bagian belakang dengan Velcro
- Tempelkan koneksi bersama sehingga tidak longgar
- Tambahkan tali untuk membawa. Saya menggunakan woven duct strap untuk ini.
- Muat musik dan efek suara Pac-Man di ponsel Anda dan bawa speaker bluetooth
Keuntungan
Setelah selesai, Anda dapat mengirim keluarga 8-bit Anda ke lingkungan untuk menggeledah tetangga dan mengumpulkan keuntungan permanis manis Anda.
Terima kasih telah membaca! Jika ada pertanyaan, jangan ragu untuk bertanya!
Kode Arduino
- Kode Animasi Hantu LED
- MsPacman
- Pacman
Kode Animasi Hantu LEDArduino
//ANIMATED PACMAN GHOST LED #include "FastLED.h" #define NUM_LEDS 170 #define DATA_PIN 3 CRGB leds[NUM_LEDS]; void setup() { delay(2000); FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness(40); FastLED.clear(); } //looking left int 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 pupils_pixels_l[] = {15, 16, 22, 23, 92, 93, 104, 105}; //looking right int 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 pupils_pixels_r[] = {64, 65, 76, 77, 146, 147, 153, 154}; //remove pixels around feet int 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; int eye_loop = (eyes_seconds*1000)/feet_delay; 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 < reg_ghost_loop; i++){ for(int i = 0; i < eye_loop; i++){ fill_solid(leds, NUM_LEDS, CRGB::Red); for (int i = 0; i < 24; i++){ leds[eyes_pixels_l[i]] = CRGB::White; } for (int i = 0; i < 8; i++){ leds[pupils_pixels_l[i]] = CRGB::DarkBlue; } for (int i = 0; i < 12; i++){ leds[void_pixels_1[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); fill_solid(leds, NUM_LEDS, CRGB::Red); for (int i = 0; i < 24; i++){ leds[eyes_pixels_l[i]] = CRGB::White; } for (int i = 0; i < 8; i++){ leds[pupils_pixels_l[i]] = CRGB::DarkBlue; } for (int i = 0; i < 10; i++){ leds[void_pixels_2[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); } for(int i = 0; i < eye_loop; i++){ fill_solid(leds, NUM_LEDS, CRGB::Red); for (int i = 0; i < 24; i++){ leds[eyes_pixels_r[i]] = CRGB::White; } for (int i = 0; i < 8; i++){ leds[pupils_pixels_r[i]] = CRGB::DarkBlue; } for (int i = 0; i < 12; i++){ leds[void_pixels_1[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); fill_solid(leds, NUM_LEDS, CRGB::Red); for (int i = 0; i < 24; i++){ leds[eyes_pixels_r[i]] = CRGB::White; } for (int i = 0; i < 8; i++){ leds[pupils_pixels_r[i]] = CRGB::DarkBlue; } for (int i = 0; i < 10; i++){ leds[void_pixels_2[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); } } //sad ghost regular for(int i = 0; i < sad_ghost_loop; i++){ fill_solid(leds, NUM_LEDS, CRGB::Blue); for (int i = 0; i < 20; i++){ leds[sad_ghost[i]] = CRGB::Yellow; } for (int i = 0; i < 12; i++){ leds[void_pixels_1[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); fill_solid(leds, NUM_LEDS, CRGB::Blue); for (int i = 0; i < 20; i++){ leds[sad_ghost[i]] = CRGB::Yellow; } for (int i = 0; i < 10; i++){ leds[void_pixels_2[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); } //sad ghost blinking for(int i = 0; i < sad_ghost_blink_loop; i++){ fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 20; i++){ leds[sad_ghost[i]] = CRGB::Red; } for (int i = 0; i < 12; i++){ leds[void_pixels_1[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); fill_solid(leds, NUM_LEDS, CRGB::Blue); for (int i = 0; i < 20; i++){ leds[sad_ghost[i]] = CRGB::Yellow; } for (int i = 0; i < 10; i++){ leds[void_pixels_2[i]] = CRGB::Black; } FastLED.show(); delay(feet_delay); } }
MsPacmanArduino
//ANIMATED MS PACMAN LED #include "FastLED.h" #define NUM_LEDS 151 #define DATA_PIN 3 CRGB leds[NUM_LEDS]; void setup() { delay(2000); FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness(40); 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() { fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 64; i++){ leds[void_pixels_opened[i]] = CRGB::Black; } for (int i = 0; i < 20; i++){ leds[red_opened[i]] = CRGB::Red; } for (int i = 0; i < 3; i++){ leds[blue_opened[i]] = CRGB::Blue; } for (int i = 0; i < 5; i++){ leds[black_opened[i]] = CRGB::Purple; } FastLED.show(); delay(frame_rate_ms); fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 39; i++){ leds[void_pixels_mid[i]] = CRGB::Black; } for (int i = 0; i < 20; i++){ leds[red_mid[i]] = CRGB::Red; } for (int i = 0; i < 3; i++){ leds[blue_mid[i]] = CRGB::Blue; } for (int i = 0; i < 4; i++){ leds[black_mid[i]] = CRGB::Purple; } FastLED.show(); delay(frame_rate_ms); fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 2; i++){ leds[void_pixels_closed[i]] = CRGB::Black; } for (int i = 0; i < 20; i++){ leds[red_closed[i]] = CRGB::Red; } for (int i = 0; i < 2; i++){ leds[blue_closed[i]] = CRGB::Blue; } for (int i = 0; i < 5; i++){ leds[black_closed[i]] = CRGB::Purple; } FastLED.show(); delay(frame_rate_ms); fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 39; i++){ leds[void_pixels_mid[i]] = CRGB::Black; } for (int i = 0; i < 20; i++){ leds[red_mid[i]] = CRGB::Red; } for (int i = 0; i < 3; i++){ leds[blue_mid[i]] = CRGB::Blue; } for (int i = 0; i < 4; i++){ leds[black_mid[i]] = CRGB::Purple; } FastLED.show(); delay(frame_rate_ms); }
PacmanArduino
//ANIMATED PACMAN LED #include "FastLED.h" #define NUM_LEDS 137 #define DATA_PIN 3 CRGB leds[NUM_LEDS]; void setup() { delay(2000); FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness(40); 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() { fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 61; i++){ leds[void_pixels_opened[i]] = CRGB::Black; } FastLED.show(); delay(frame_rate_ms); fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 27; i++){ leds[void_pixels_mid[i]] = CRGB::Black; } FastLED.show(); delay(frame_rate_ms); fill_solid(leds, NUM_LEDS, CRGB::Yellow); FastLED.show(); delay(frame_rate_ms); fill_solid(leds, NUM_LEDS, CRGB::Yellow); for (int i = 0; i < 27; i++){ leds[void_pixels_mid[i]] = CRGB::Black; } FastLED.show(); delay(frame_rate_ms); }
Bagian Kustom dan Enclosure
File untuk memotong laser kostum hantu dari karton 1/8 inci. Disetel untuk ukuran tempat kerja penggera laser 32 inci x 18 inci.ghostlaser-1_8th_v5_feTmMAM4r0.dwg File DWG penggera laser untuk Ms. Pacman dan Pacmanpacman-mspacman-laser_KVFskMrPk4.dwg
Skematik
Cara menyetokkan LED, Arduino, dan portable power