Daftar Isi:

Mata LED & Hood Kostum Terkendali Jarak Jauh: 7 Langkah (dengan Gambar)
Mata LED & Hood Kostum Terkendali Jarak Jauh: 7 Langkah (dengan Gambar)

Video: Mata LED & Hood Kostum Terkendali Jarak Jauh: 7 Langkah (dengan Gambar)

Video: Mata LED & Hood Kostum Terkendali Jarak Jauh: 7 Langkah (dengan Gambar)
Video: Berjuang Untuk Rakyat? Ahhh Yang Bener? 2024, November
Anonim

Oleh bekathwaBecky SternIkuti Lainnya oleh penulis:

Teman Privasi Kamera Web
Teman Privasi Kamera Web
Teman Privasi Kamera Web
Teman Privasi Kamera Web
Pita Pengukur Antena Yagi Dengan Skrup Cetak 3D
Pita Pengukur Antena Yagi Dengan Skrup Cetak 3D
Pita Pengukur Antena Yagi Dengan Skrup Cetak 3D
Pita Pengukur Antena Yagi Dengan Skrup Cetak 3D
Bordir Zodiak
Bordir Zodiak
Sulaman Zodiak
Sulaman Zodiak

Tentang: Membuat dan berbagi adalah dua hasrat terbesar saya! Secara total saya telah menerbitkan ratusan tutorial tentang segala hal mulai dari mikrokontroler hingga merajut. Saya seorang pengendara sepeda motor New York City dan ibu anjing yang tidak menyesal. My wo… Selengkapnya Tentang bekatwia »

Jawa kembar! Orko ganda! Dua penyihir hantu dari Bubble-Bobble! Tudung kostum ini bisa berupa makhluk bermata LED apa pun yang Anda pilih hanya dengan mengubah warnanya. Saya pertama kali membuat proyek ini pada tahun 2015 dengan sirkuit dan kode yang sangat sederhana, tetapi tahun ini saya ingin membuat versi yang ditingkatkan dengan kontrol animasi simultan di dua kostum. Sirkuit ini menggunakan satu remote RF jarak dekat sederhana untuk mengontrol dua penerima pada frekuensi yang sama, dan kode Arduino menggunakan interupsi untuk mencapai perubahan animasi yang responsif, berdasarkan kode tutorial Bill Earl.

Untuk proyek ini, Anda akan membutuhkan:

  • Dua Permata NeoPixel
  • Mikrokontroler GEMMA M0
  • Penerima nirkabel 315MHz, tipe penguncian
  • Remote RF nirkabel 315MHz dalam konfigurasi empat, dua, atau satu tombol
  • Kawat terdampar berlapis silikon (disarankan 30awg)
  • Besi solder dan solder
  • penari telanjang kawat
  • Pemotong siram
  • Pinset
  • Membantu alat tangan ketiga (opsional)
  • Pin jahit
  • Kapur penjahit (opsional)
  • Kawat baja galvanis 19awg
  • Kain tebal untuk tudung/cape (untuk versi ini saya menggunakan dua lapis kain tembakau putih dan satu lapis kain katun tipis putih, lalu melapisi bagian dalam tudung dengan warna hitam pekat untuk menghalangi cahaya)
  • Kain hitam transparan untuk panel wajah
  • Mesin jahit
  • Gunting
  • Jarum dan benang
  • Printer 3D dengan filamen fleksibel (opsional)

Untuk mengikuti apa yang sedang saya kerjakan, ikuti saya di YouTube, Instagram, Twitter, Pinterest, dan berlangganan buletin saya. Sebagai Associate Amazon, saya memperoleh penghasilan dari pembelian yang memenuhi syarat yang Anda lakukan menggunakan tautan afiliasi saya.

Sebelum Anda mulai, Anda mungkin ingin membaca prasyarat berikut:

  • Memperkenalkan Gemma M0
  • NeoPixel Uberguide
  • Versi proyek kap pertama (dibangun pada tahun 2015 dengan Gemma klasik dan tanpa kontrol nirkabel)
  • Multitasking Arduino pt 3

Langkah 1: Diagram Sirkuit dan Kode

Diagram Sirkuit dan Kode
Diagram Sirkuit dan Kode

Koneksi sirkuit adalah sebagai berikut:

  • Gemma D2 ke penerima nirkabel D0
  • Gemma D0 ke penerima nirkabel D1
  • Gemma 3V ke penerima nirkabel +5V
  • Gemma GND ke penerima nirkabel GND dan permata NeoPixel GND
  • Gemma D1 ke data permata NeoPixel IN
  • Gemma Vout ke permata NeoPixel PWR
  • Data permata NeoPixel KELUAR ke data Permata NeoPixel lainnya IN

Lihat langkah selanjutnya untuk catatan perakitan.

Kode didasarkan pada Multi-tasking sketsa Arduino oleh Bill Earl, dan dimodifikasi untuk mengontrol dua permata NeoPixel dengan dua input digital. Jadi Anda tidak perlu menggunakan penerima nirkabel-- Anda bisa menggunakan tombol di sirkuit itu sendiri. Unduh file kode Arduino ini dari lampiran langkah ini, atau salin dan tempel dari sini ke sketsa Arduino kosong:

#sertakan "Adafruit_NeoPixel.h"

// Jenis pola yang didukung: pola enum { NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE }; // Arah pola yang didukung: arah enum { MAJU, Mundur }; // Kelas NeoPattern - diturunkan dari kelas Adafruit_NeoPixel class NeoPatterns: public Adafruit_NeoPixel { public: // Variabel Anggota: pola ActivePattern; // pola mana yang menjalankan arah Arah; // arah untuk menjalankan pola Interval panjang yang tidak ditandatangani; // milidetik antara pembaruan yang tidak ditandatangani long lastUpdate; // update terakhir posisi uint32_t Color1, Color2; // Warna apa yang digunakan uint16_t TotalSteps; // jumlah langkah dalam pola uint16_t Index; // langkah saat ini dalam pola void (*OnComplete)(); // Callback pada penyelesaian pola // Konstruktor - memanggil konstruktor kelas dasar untuk menginisialisasi strip NeoPatterns(piksel uint16_t, pin uint8_t, tipe uint8_t, void (*callback)()):Adafruit_NeoPixel(piksel, pin, tipe) { OnComplete = panggilan balik; } // Perbarui pola void Update() { if((millis() - lastUpdate) > Interval) // waktu untuk memperbarui { lastUpdate = millis(); switch(ActivePattern) { kasus RAINBOW_CYCLE: RainbowCycleUpdate(); merusak; kasus THEATER_CHASE: TheaterChaseUpdate(); merusak; kasus COLOR_WIPE: ColorWipeUpdate(); merusak; kasus SCANNER: ScannerUpdate(); merusak; kasus FADE: FadeUpdate(); merusak; default: istirahat; } } } // Tingkatkan Indeks dan reset di akhir void Increment() { if (Arah == MAJU) { Indeks++; if (Indeks >= TotalLangkah) { Indeks = 0; if (Selesai != NULL) { Selesai(); // panggil callback penyelesaian } } } else // Arah == REVERSE { --Index; if (Indeks <= 0) { Indeks = TotalLangkah-1; if (Selesai != NULL) { Selesai(); // memanggil callback penyelesaian } } } } // Membalikkan arah pola void Reverse() { if (Arah == MAJU) { Arah = REVERSE; Indeks = TotalLangkah-1; } else { Arah = MAJU; Indeks = 0; } } // Inisialisasi untuk RainbowCycle void RainbowCycle(interval uint8_t, arah dir = FORWARD) { ActivePattern = RAINBOW_CYCLE; Interval = interval; TotalLangkah = 255; Indeks = 0; Arah = arah; } // Perbarui Pola Siklus Pelangi void RainbowCycleUpdate() { for(int i=0; i< numPixels(); i++) { setPixelColor(i, Wheel(((i * 256 / numPixels()) + Indeks) & 255)); } menunjukkan(); Kenaikan(); } // Inisialisasi untuk Theater Chase void TheaterChase(uint32_t color1, uint32_t color2, uint8_t interval, direction dir = FORWARD) { ActivePattern = THEATER_CHASE; Interval = interval; TotalLangkah = numPixels(); Warna1 = warna1; Warna2 = warna2; Indeks = 0; Arah = arah; } // Perbarui Theatre Chase Pattern void TheaterChaseUpdate() { for(int i=0; i< numPixels(); i++) { if ((i + Index) % 3 == 0) { setPixelColor(i, Color1); } else { setPixelColor(i, Color2); } } menunjukkan(); Kenaikan(); } // Inisialisasi untuk ColorWipe void ColorWipe(warna uint32_t, interval uint8_t, arah dir = FORWARD) { ActivePattern = COLOR_WIPE; Interval = interval; TotalLangkah = numPixels(); Warna1 = warna; Indeks = 0; Arah = arah; } // Perbarui Pola Penghapusan Warna void ColorWipeUpdate() { setPixelColor(Index, Color1); menunjukkan(); Kenaikan(); } // Inisialisasi untuk Pemindai void PEMINDAI (uint32_t color1, uint8_t interval) { ActivePattern = SCANNER; Interval = interval; TotalSteps = (numPixels() - 1) * 2; Warna1 = warna1; Indeks = 0; } // Perbarui Pola Pemindai void ScannerUpdate() { for (int i = 0; i > 1, Hijau(warna) >> 1, Biru(warna) >> 1); kembali dimColor; } // Atur semua piksel menjadi warna (sinkron) void ColorSet(uint32_t color) { for (int i = 0; i > 16) & 0xFF; } // Mengembalikan komponen Hijau dari warna 32-bit uint8_t Green(uint32_t color) { return (color >> 8) & 0xFF; } // Mengembalikan komponen Biru dari warna 32-bit uint8_t Biru(uint32_t color) { mengembalikan warna & 0xFF; } // Masukkan nilai 0 hingga 255 untuk mendapatkan nilai warna. // Warna adalah transisi r - g - b - kembali ke r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { mengembalikan Warna(255 - WheelPos * 3, 0, WheelPos * 3); } else if(WheelPos < 170) { WheelPos -= 85; return Color(0, WheelPos * 3, 255 - WheelPos * 3); } else { WheelPos -= 170; kembali Warna(WheelPos * 3, 255 - WheelPos * 3, 0); } } }; void PermataLengkap(); // Tentukan beberapa NeoPatterns untuk dua cincin dan tongkat // serta beberapa rutinitas penyelesaian Permata NeoPatterns(14, 1, NEO_GRBW + NEO_KHZ800, &JewelsComplete); const int KECERAHAN = 50; // Inisialisasi semuanya dan bersiap untuk memulai void setup() { Serial.begin(115200); pinMode(2, INPUT); pinMode(0, INPUT); // Inisialisasi semua piksel Jewels.setBrightness(BRIGHTNESS); Permata.mulai(); // Memulai pola Jewels. TheaterChase(Jewels. Color(255, 50, 0), Jewels. Color(0, 0, 0, 50), 100); } // Loop utama void loop() { // Perbarui permata. Permata. Perbarui(); // Beralih pola pada tombol tekan: if (digitalRead(2) == HIGH) // Tombol #1 ditekan { Jewels. Color1 = Jewels. Color(255, 50, 0); Jewels. ActivePattern = PUDAR; Permata. TotalLangkah = 100; Permata. Interval = 1; } else if (digitalRead(0) == HIGH) // Tombol #2 ditekan { Jewels. Color1 = Jewels. Color(255, 0, 0); Jewels. ActivePattern = PEMINDAI; Jewels. TotalSteps = Permata.numPixels(); Permata. Interval = 100; } else // Kembali ke operasi normal { // Kembalikan semua parameter pola ke nilai normal Jewels. Color1 = Jewels. Color(255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Permata.numPixels(); Permata. Interval = 100; } } //---------------------------------------------- -------------- //Completion Routines - dipanggil saat menyelesaikan sebuah pola //---------------------- --------------------------------------- // Panggilan Balik Penyelesaian Permata void JewelsComplete() { // Perubahan warna acak untuk pemindaian berikutnya //Jewels. Color1 = Jewels. Wheel(random(255)); Permata. Terbalik(); }

Langkah 2: Merakit Sirkuit

Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit
Merakit Sirkuit

Satu set pencengkeram tangan ketiga yang membantu dapat membuat proses menyolder kabel ke komponen menjadi sangat mudah dan menyenangkan. Tapi jangan khawatir jika Anda tidak memiliki satu set; Anda selalu dapat menggunakan selotip atau dempul poster untuk menjaga papan Anda tetap stabil saat Anda menyolder.

Gunakan potongan tipis kawat beruntai (panjang sekitar 6 inci/15 cm) untuk sambungan antara dua permata NeoPixel (diagram pada langkah sebelumnya). Jika Anda menggunakan kabel yang terlalu pendek, Anda tidak akan dapat menempatkan mata LED Anda cukup jauh, dan jika Anda menggunakan terlalu banyak kabel, kendur akan mengenai wajah Anda saat Anda mengenakan kostum.

Sirkuit utama akan hidup di area kerah (di mana dada Anda bertemu bahu Anda), jadi untuk koneksi antara permata NeoPixel pertama di rantai dan Gemma, kabelnya akan lebih panjang. Anda dapat memegang kawat ke area mata Anda dan menariknya keluar untuk mengukur jarak yang harus ditempuh kawat, lalu menambahkan sedikit lebih banyak untuk kendur dan asuransi.

Untuk menghubungkan antara Gemma dan penerima nirkabel, saya memilih untuk menggunakan kabel prototyping dengan header perempuan, karena penerima nirkabel sudah memiliki pin header terpasang.

Langkah 3: Daya Baterai

Daya baterai
Daya baterai
Daya baterai
Daya baterai

Untuk menyalakan sirkuit, saya menggunakan baterai lipo 500mAh. Jika menggunakan baterai lipo, ada baiknya untuk melindunginya dari goresan, tusukan, lecet, tekukan, dan penyalahgunaan lainnya. Anda bisa membungkusnya dengan selotip kain yang kokoh, atau membuat dudukan cetak 3D untuknya.

Anda dapat dengan mudah menggunakan pemegang 3xAAA sebagai gantinya (bawa di saku Anda, bukan di dalam kerah).

Langkah 4: Pola Menjahit & Memotong Kain

Pola Jahit & Memotong Kain
Pola Jahit & Memotong Kain

Saya menggunakan pola yang sama yang saya buat untuk versi pertama kostum ini, yang merupakan PDF multi-halaman yang disatukan untuk membuat potongan pola.

Lipat kain Anda, sejajarkan tepi tepi untuk menyelaraskan serat kain, dan letakkan/pin potongan pola di sepanjang lipatan seperti yang ditandai. Lacak kelonggaran jahitan di luar potongan pola (kecuali lipatan) sekitar 5/8 inci/3 cm menggunakan kapur penanda atau pensil. Karena kain saya tipis, saya ingin menggandakannya, dan karena saya membuat dua tudung, saya akhirnya memotong empat dari setiap potongan pola di kain utama, lalu lapisan lain di kain tipis kasa untuk menambahkan tekstur ke luar, dan akhirnya sebuah lapisan kain hitam sebagai liner untuk menghalangi cahaya masuk. Saya pikir jika saya telah merencanakan ke depan untuk itu, saya bisa menjatuhkan salah satu lapisan putih awal dan tudung akan terdiri dari hanya tiga lapisan masing-masing, bukan empat.

Langkah 5: Merakit Potongan Kain

Merakit Potongan Kain
Merakit Potongan Kain
Merakit Potongan Kain
Merakit Potongan Kain
Merakit Potongan Kain
Merakit Potongan Kain
Merakit Potongan Kain
Merakit Potongan Kain

Sematkan dan jahit jahitan dart/bahu pada setiap potongan pola, lalu sejajarkan potongan tudung dan jubah di sepanjang jahitan leher dengan sisi kanan menyatu. Jahit jahitannya, serta jahitan lurus di bagian atas tudung.

Coba di kap mesin. Lipat dan sematkan tepi depan tudung yang kasar dan jahit ke bawah untuk membuat tepi yang rapi serta saluran untuk dilalui kabel.

Selanjutnya, potong sepotong kain hitam tipis untuk menutupi bagian depan tudung. Inilah yang akan mendukung sirkuit dan menyembunyikan wajah Anda. Sematkan di tempatnya saat mengenakan tudung agar pas, lalu jahit dengan tangan atau mesin ke bukaan tudung.

Langkah 6: Instal Sirkuit di Hood

Pasang Sirkuit di Hood
Pasang Sirkuit di Hood

Saya memasang tudung, menyalakan sirkuit, dan menggunakan cermin untuk menentukan lokasi terbaik untuk LED. Kemudian saya menggunakan pin untuk menandai lokasi dan menjahit dengan hati-hati menggunakan benang hitam, memasang lubang pemasangan pada permata NeoPixel ke panel depan hitam tipis. Milik saya duduk tepat di bawah mata asli saya, yang membuatnya mudah untuk melihat melewati mereka.

Bilas dan ulangi jika Anda membuat tudung kedua.

Langkah 7: Pakai

Pakai itu!
Pakai itu!
Pakai itu!
Pakai itu!
Pakai itu!
Pakai itu!
Pakai itu!
Pakai itu!

Ini sangat menyenangkan untuk dipakai. Sangat mudah untuk melihat keluar, dan tidak mudah bagi orang lain untuk melihat wajah Anda. Semuanya juga cukup nyaman, berkat tudung besar dan bingkai kawat, yang membuat kain depan tidak menutupi wajah Anda.

Pacar saya dan saya memakai ini untuk DJ pesta Halloween hackerspace saya tahun ini, dan sementara saya bisa melihat antarmuka untuk perangkat lunak proyektor laser, dia tidak bisa melihat teks kecil di abelton, jadi kami harus menyesuaikannya untuk memiliki tampilan yang lebih baik. Saya melepas panel kain hitam dari bagian atas tudung, dan melipat kelebihannya. Di ruangan yang gelap, Anda tidak bisa membedakan keduanya, meskipun Anda bisa melihatnya di foto kami bersama di atas.

Terima kasih sudah membaca! Jika Anda menyukai proyek ini, Anda mungkin tertarik dengan beberapa proyek saya yang lain:

  • 13 Ide untuk Menyebar LED
  • Tanda Strip LED Tersebar Dengan Arduino / Bluetooth
  • Penghitung Pelanggan YouTube dengan ESP8266
  • Cermin Infinity Mudah
  • 3 Kesalahan Arduino Pemula

Untuk mengikuti apa yang sedang saya kerjakan, ikuti saya di YouTube, Instagram, Twitter, dan Pinterest.

Direkomendasikan: