Cuprins:

Telecomandă LED cu ochi și capotă pentru costume: 7 pași (cu imagini)
Telecomandă LED cu ochi și capotă pentru costume: 7 pași (cu imagini)

Video: Telecomandă LED cu ochi și capotă pentru costume: 7 pași (cu imagini)

Video: Telecomandă LED cu ochi și capotă pentru costume: 7 pași (cu imagini)
Video: I-am luat Rolex in Dubai si tot nu ma suporta... 2024, Noiembrie
Anonim

De bekathwia Becky Stern Urmăriți mai multe de la autor:

Webcam Confidențialitate Prieten
Webcam Confidențialitate Prieten
Webcam Confidențialitate Prieten
Webcam Confidențialitate Prieten
Antena Yagi cu bandă măsurată cu cuplaje imprimate 3D
Antena Yagi cu bandă măsurată cu cuplaje imprimate 3D
Antena Yagi cu bandă măsurată cu cuplaje imprimate 3D
Antena Yagi cu bandă măsurată cu cuplaje imprimate 3D
Broderie zodiacală
Broderie zodiacală
Broderie zodiacală
Broderie zodiacală

Despre: Realizarea și partajarea sunt cele mai mari pasiuni ale mele! În total, am publicat sute de tutoriale despre totul, de la microcontrolere la tricotat. Sunt un motociclist din New York și o mamă de câine nepocăit. Vai … Mai multe despre bekathwia »

Twin Jawas! Dublu Orko! Doi vrăjitori fantomă de la Bubble-Bobble! Această capotă de costum poate fi orice creatură cu ochi LED pe care o alegeți doar prin schimbarea culorilor. Am făcut acest proiect pentru prima dată în 2015 cu un circuit și un cod foarte simplu, dar anul acesta am vrut să creez o versiune actualizată cu control simultan al animației pe două costume. Acest circuit utilizează o telecomandă RF simplă, cu distanță apropiată, pentru a controla două receptoare pe aceeași frecvență și codul Arduino care folosește întreruperi pentru a realiza modificări de animație receptive, pe baza codului tutorial al lui Bill Earl.

Pentru acest proiect, veți avea nevoie de:

  • Două bijuterii NeoPixel
  • Microcontroler GEMMA M0
  • Receptor wireless de 315 MHz, tip blocare
  • Telecomandă RF fără fir de 315 MHz în configurație cu patru, două sau un singur buton
  • Sârmă torsadată cu silicon (se recomandă 30awg)
  • Fier de lipit și lipit
  • Decapanti de sârmă
  • Îndepărtați frezele
  • Pensetă
  • Instrument de ajutor pentru a treia mână (opțional)
  • Știfturi de cusut
  • Creta de croitor (opțional)
  • Sârmă de oțel zincat de 19awg
  • Țesătură groasă pentru glugă / pelerină (pentru această versiune am folosit două straturi de pânză de tutun alb și un strat de pânză de brânză albă, apoi am căptușit interiorul glugii cu negru solid pentru a bloca lumina)
  • Țesătură neagră translucidă pentru panoul frontal
  • Mașină de cusut
  • Foarfece
  • Ac si ata
  • Imprimantă 3D cu filament flexibil (opțional)

Pentru a ține pasul cu ceea ce lucrez, urmează-mă pe YouTube, Instagram, Twitter, Pinterest și abonează-te la newsletter-ul meu. În calitate de asociat Amazon câștig din achizițiile eligibile pe care le faceți folosind linkurile mele de afiliere.

Înainte de a începe, vă recomandăm să citiți următoarele condiții prealabile:

  • Vă prezentăm Gemma M0
  • NeoPixel Uberguide
  • Prima versiune a proiectului capotei (construită în 2015 cu Gemma clasică și fără control wireless)
  • Multitasking Arduino pt 3

Pasul 1: Schema circuitului și codul

Diagrama circuitului și codul
Diagrama circuitului și codul

Conexiunile circuitului sunt după cum urmează:

  • Gemma D2 către receptorul wireless D0
  • Gemma D0 către receptorul wireless D1
  • Gemma 3V la receptor wireless + 5V
  • Gemma GND către receptorul wireless GND și bijuteriile NeoPixel GND
  • Date bijuterii Gemma D1 către NeoPixel IN
  • Gemma Vout la bijuteriile NeoPixel PWR
  • Date de bijuterie NeoPixel OUT către alte date de bijuterie NeoPixel IN

Consultați pasul următor pentru note de asamblare.

Codul se bazează pe schița Arduino Multi-tasking de Bill Earl și este modificat pentru a controla două bijuterii NeoPixel cu două intrări digitale. Deci, nu trebuie să utilizați receptorul wireless - puteți folosi butoanele circuitului în sine. Descărcați acest fișier de cod Arduino din atașamentele acestui pas sau copiați și lipiți de aici într-o schiță Arduino goală:

#include "Adafruit_NeoPixel.h"

// Tipuri de modele acceptate: enum pattern {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Direcții Patern acceptate: direcția enum {FORWARD, INVERSE}; // Clasa NeoPattern - derivată din clasa clasei Adafruit_NeoPixel NeoPatterns: public Adafruit_NeoPixel {public: // Variabile membre: model ActivePattern; // ce tipar este direcția de rulare Direcție; // direcția pentru a rula modelul Interval lung nesemnat; // milisecunde între actualizări nesemnate long lastUpdate; // ultima actualizare a poziției uint32_t Color1, Color2; // Ce culori sunt utilizate uint16_t TotalSteps; // numărul total de pași din modelul uint16_t Index; // pasul curent în cadrul modelului nul (* OnComplete) (); // Callback la finalizarea modelului // Constructor - apelează constructorul de bază pentru a inițializa NeoPatterns (uint16_t pixeli, uint8_t pin, uint8_t tip, void (* callback) ()): Adafruit_NeoPixel (pixeli, pin, tip) {OnComplete = suna inapoi; } // Actualizați modelul void Actualizați () {if ((millis () - lastUpdate)> Interval) // timp pentru actualizare {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); pauză; case THEATER_CHASE: TheaterChaseUpdate (); pauză; carcasă COLOR_WIPE: ColorWipeUpdate (); pauză; caz SCANNER: ScannerUpdate (); pauză; caz FADE: FadeUpdate (); pauză; implicit: pauză; }}} // Măriți Indexul și resetați la sfârșitul anului, anulați Incrementarea () {if (Direcția == FORWARD) {Index ++; if (Index> = TotalSteps) {Index = 0; if (OnComplete! = NULL) {OnComplete (); // apelează apelul de completare}}} altfel // Direcția == REVERSE {--Index; if (Index <= 0) {Index = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // apelați apelul de cometere}}}} // Reverse direcția șablonului nul Reverse () {if (Direcție == ÎNAINTE) {Direcție = INVERSARE; Index = TotalSteps-1; } else {Direction = FORWARD; Index = 0; }} // Inițializați pentru un RainbowCycle void RainbowCycle (interval uint8_t, direcția dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Interval = interval; TotalSteps = 255; Index = 0; Direction = dir; } // Actualizați Rainbow Cycle Pattern void RainbowCycleUpdate () {pentru (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ()) + Index) & 255)); } spectacol(); Creştere(); } // Inițializați pentru un Theater Chase void TheaterChase (uint32_t color1, uint32_t color2, uint8_t interval, direcția dir = FORWARD) {ActivePattern = THEATER_CHASE; Interval = interval; TotalSteps = numPixels (); Culoare1 = culoare1; Culoare2 = culoare2; Index = 0; Direction = dir; } // Actualizați modelul Theater Chase void TheaterChaseUpdate () {pentru (int i = 0; i <numPixels (); i ++) {if ((i + Index)% 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); } } spectacol(); Creştere(); } // Inițializați pentru un ColorWipe gol ColorWipe (uint32_t color, uint8_t interval, direcția dir = FORWARD) {ActivePattern = COLOR_WIPE; Interval = interval; TotalSteps = numPixels (); Culoare1 = culoare; Index = 0; Direction = dir; } // Actualizați modelul de ștergere a culorii void ColorWipeUpdate () {setPixelColor (Index, Color1); spectacol(); Creştere(); } // Inițializați pentru un SCANNNER void Scanner (uint32_t color1, uint8_t interval) {ActivePattern = SCANNER; Interval = interval; TotalSteps = (numPixels () - 1) * 2; Culoare1 = culoare1; Index = 0; } // Actualizați Scanner Pattern void ScannerUpdate () {for (int i = 0; i > 1, verde (culoare) >> 1, albastru (culoare) >> 1); returnează dimColor; } // Setați toți pixelii la o culoare (sincron) nul ColorSet (uint32_t color) {pentru (int i = 0; i> 16) & 0xFF; } // Returnează componenta verde a unei culori pe 32 de biți uint8_t Verde (uint32_t culoare) {return (culoare >> 8) & 0xFF; } // Returnează componenta albastră a unei culori pe 32 de biți uint8_t Blue (uint32_t color) {return color & 0xFF; } // Introduceți o valoare de la 0 la 255 pentru a obține o valoare a culorii. // Culorile sunt o tranziție r - g - b - înapoi la r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return Culoare (255 - WheelPos * 3, 0, WheelPos * 3); } else if (WheelPos <170) {WheelPos - = 85; return Culoare (0, WheelPos * 3, 255 - WheelPos * 3); } else {WheelPos - = 170; return Color (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Definiți câteva NeoPatterns pentru cele două inele și stick-ul // precum și câteva rutine de finalizare NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int LUMINOSITATE = 50; // Inițializați totul și pregătiți-vă să începeți configurarea nulă () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Inițializați toți pixelii Jewels.setBrightness (BRIGHTNESS); Bijuterii.begin (); // Lansează un model Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Bucla principală void loop () {// Actualizați bijuteriile. Bijuterii. Actualizare (); // Comutați modelele pe un buton apăsați: if (digitalRead (2) == HIGH) // Butonul # 1 apăsat {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Bijuterii. TotalSteps = 100; Bijuterii. Interval = 1; } else if (digitalRead (0) == HIGH) // Butonul # 2 apăsat {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = SCANNER; Jewels. TotalSteps = Jewels.numPixels (); Bijuterii. Interval = 100; } else // Înapoi la funcționarea normală {// Restabiliți toți parametrii modelului la valorile normale Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Bijuterii. Interval = 100; }} // ---------------------------------------------- -------------- // Rutine de finalizare - sună apelat la finalizarea unui model // ---------------------- -------------------------------------- // Bijuterii Completare Callback void JewelsComplete () {// Modificare aleatorie a culorii pentru următoarea scanare //Jewels. Color1 = Jewels. Wheel (random (255)); Bijuterii. Reverse (); }

Pasul 2: Asamblați circuitul

Asamblați circuitul
Asamblați circuitul
Asamblați circuitul
Asamblați circuitul

Un set de dispozitive de prindere cu mâna a treia poate face procesul de lipire a firelor la componente foarte simplu și distractiv. Dar nu vă faceți griji dacă nu aveți un set; puteți folosi întotdeauna niște chit de bandă sau poster pentru a vă menține tabloul constant în timp ce lipiți.

Utilizați bucăți subțiri de sârmă torsadată (aproximativ 6in / 15cmin lungime) pentru conexiunile dintre cele două bijuterii NeoPixel (diagramă în pasul anterior). Dacă utilizați fire care sunt prea scurte, nu veți putea să vă așezați ochii cu LED-uri suficient de departe, iar dacă utilizați prea mult sârmă, slăbiciunea vă va intra în față în timp ce purtați costumul.

Circuitul principal va locui în zona reverului (unde pieptul tău se întâlnește cu umărul tău), astfel încât pentru conexiunile dintre prima bijuterie NeoPixel din lanț și Gemma, firele vor fi mult mai lungi. Puteți ține firul până la zona ochilor și trageți-l pentru a măsura distanța pe care ar trebui să o parcurgă firul, apoi adăugați un pic mai mult pentru relaxare și asigurare.

Pentru a mă conecta între Gemma și receptorul wireless, am ales să folosesc fire de prototipare cu anteturi de sex feminin, deoarece receptorul wireless are deja atașați pini de antet.

Pasul 3: Alimentarea bateriei

Puterea bateriei
Puterea bateriei
Puterea bateriei
Puterea bateriei

Pentru a alimenta circuitul, am folosit o baterie lipoly de 500 mAh. Dacă utilizați o baterie lipoly, este înțelept să o protejați de zgârieturi, puncții, abraziuni, îndoire și alte abuzuri. Puteți să o înfășurați într-o bandă robustă din material textil sau să creați un suport imprimat 3D pentru aceasta.

Puteți utiliza cu ușurință un suport 3xAAA în loc (purtați-l în buzunar în loc de interiorul reverului).

Pasul 4: Model de cusut și material de tăiat

Model de cusut și țesătură
Model de cusut și țesătură

Am folosit același model pe care l-am creat pentru prima versiune a acestui costum, care este un PDF cu mai multe pagini care se asortează împreună pentru a crea piesele de model.

Îndoiți țesătura, aliniați marginile de margine pentru a alinia bobul țesăturii și așezați / fixați piesele modelului de-a lungul pliului, așa cum este marcat. Urmați o limită de cusătură în afara pieselor modelului (cu excepția pliului) de aproximativ 5 / 8in / 3cm folosind o cretă sau un creion. Deoarece țesătura mea era subțire, am vrut să o dublu și, din moment ce am făcut două glugi, am ajuns să tai patru din fiecare piesă de model în țesătura principală, apoi un alt strat de pânză de brânză gazoasă pentru a adăuga textură la exterior și, în cele din urmă, o strat de țesătură neagră ca o căptușeală pentru a bloca intrarea luminii. Cred că, dacă aș fi planificat în avans pentru asta, aș fi putut scăpa unul dintre straturile albe inițiale, iar hotei ar fi format din doar trei straturi fiecare în loc de patru.

Pasul 5: Asamblați bucăți de țesătură

Asamblați bucăți de țesătură
Asamblați bucăți de țesătură
Asamblați bucăți de țesătură
Asamblați bucăți de țesătură
Asamblați bucăți de țesătură
Asamblați bucăți de țesătură
Asamblați bucăți de țesătură
Asamblați bucăți de țesătură

Fixați și coaseți săgeți / cusături de umăr pe fiecare piesă de model, apoi aliniați bucățile de capotă și pelerină de-a lungul cusăturii gâtului cu părțile drepte împreună. Cusătura cusăturii, precum și o cusătură direct peste partea superioară a capotei.

Încercați capota. Îndoiți și fixați marginea frontală brută a hotei și coaseți-o în jos pentru a crea o margine îngrijită, precum și un canal pentru trecerea unui fir.

Apoi, tăiați o bucată rotundă de material negru pur pentru a acoperi partea din față a glugii. Iată ce va susține circuitul și vă va ascunde fața. Fixați-l în poziție în timp ce purtați capota pentru o potrivire cât mai bună, apoi coaseți-o manual sau cu mașina la deschiderea capotei.

Pasul 6: Instalați circuitul în capotă

Instalați circuitul în capotă
Instalați circuitul în capotă

Am pus capota, am pornit circuitul și am folosit o oglindă pentru a descoperi cea mai bună locație pentru LED-uri. Apoi am folosit știfturi pentru a marca locațiile și am cusut cu grijă folosind fir negru, atașând găurile de montare de pe bijuteriile NeoPixel pe panoul frontal negru pur. Al meu stă chiar sub ochii mei reali, ceea ce face mai ușor să văd pe lângă ei.

Clătiți și repetați dacă faceți oa doua capotă.

Pasul 7: Purtați-l

Poarta-l!
Poarta-l!
Poarta-l!
Poarta-l!
Poarta-l!
Poarta-l!
Poarta-l!
Poarta-l!

Acestea sunt atât de distractive de purtat. Este ușor de văzut și nu este ușor pentru alții să vă vadă fața. Întregul lucru este destul de confortabil, datorită glugii supradimensionate și a cadrului din sârmă, care împiedică țesătura din față să se plece pe față.

Iubitul meu și cu mine le-am purtat la DJ pentru petrecerea de Halloween a hackerspace-ului meu anul acesta și, în timp ce puteam vedea interfața pentru software-ul cu proiector laser, el nu reușea să distingă textul minuscul din abelton, așa că a trebuit să-l adaptăm pentru a avea un vedere mai bună. Am îndepărtat panoul de țesătură neagră de pe capătul superior al hotei și am pliat peste exces. Într-o cameră întunecată, nu prea puteai face diferența dintre cele două, deși o poți vedea în fotografia noastră împreună de mai sus.

Mulțumesc pentru lectură! Dacă îți place acest proiect, s-ar putea să te intereseze unii dintre ceilalți ai mei:

  • 13 Idei pentru difuzarea LED-urilor
  • Semn difuzat cu bandă LED cu Arduino / Bluetooth
  • Contor abonat YouTube cu ESP8266
  • Easy Infinity Mirror
  • 3 Greșeli pentru începători Arduino

Pentru a ține pasul cu ceea ce lucrez, urmează-mă pe YouTube, Instagram, Twitter și Pinterest.

Recomandat: