Taula de continguts:

Ulls LED i caputxa de vestuari controlats a distància: 7 passos (amb imatges)
Ulls LED i caputxa de vestuari controlats a distància: 7 passos (amb imatges)

Vídeo: Ulls LED i caputxa de vestuari controlats a distància: 7 passos (amb imatges)

Vídeo: Ulls LED i caputxa de vestuari controlats a distància: 7 passos (amb imatges)
Vídeo: Red Moon Rising | Critical Role | Campaign 3, Episode 50 2024, Juliol
Anonim

Per bekathwia Becky Stern Segueix més de l’autor:

Amic de privadesa de la càmera web
Amic de privadesa de la càmera web
Amic de privadesa de la càmera web
Amic de privadesa de la càmera web
Antena Yagi de cinta mètrica amb acobladors impresos en 3D
Antena Yagi de cinta mètrica amb acobladors impresos en 3D
Antena Yagi de cinta mètrica amb acobladors impresos en 3D
Antena Yagi de cinta mètrica amb acobladors impresos en 3D
Brodats del zodíac
Brodats del zodíac
Brodats del zodíac
Brodats del zodíac

Quant a: Fer i compartir són les meves dues passions més grans! En total he publicat centenars de tutorials sobre des de microcontroladors fins a teixir. Sóc un motorista de la ciutat de Nova York i una mare gos impenitent. My wo … Més sobre bekathwia »

Twin Jawas! Doble Orko! Dos mags fantasmes de Bubble-Bobble! Aquesta caputxa de vestuari pot ser qualsevol criatura amb ulls LED que trieu només canviant els colors. Vaig fer aquest projecte per primera vegada el 2015 amb un circuit i un codi molt senzills, però aquest any volia crear una versió actualitzada amb control d’animació simultània a través de dos vestits. Aquest circuit utilitza un control remot de RF de distància propera senzill per controlar dos receptors amb la mateixa freqüència i el codi Arduino que utilitza interrupcions per aconseguir canvis d’animació sensibles, basats en el codi tutorial de Bill Earl.

Per a aquest projecte, necessitareu:

  • Dues joies de NeoPixel
  • Microcontrolador GEMMA M0
  • Receptor sense fils de 315 MHz, tipus de tancament
  • Comandament sense fils de RF de 315 MHz en configuració de quatre, dos o un sol botó
  • Filferro varat recobert de silicona (es recomana 30awg)
  • Soldador i soldador
  • Decapants de filferro
  • Talladors a ras
  • Pinces
  • Eina d'ajuda de tercera mà (opcional)
  • Agulles de cosir
  • Guix de sastre (opcional)
  • Filferro d'acer galvanitzat de 19awg
  • Teixit gruixut per a caputxa / capa (per a aquesta versió he utilitzat dues capes de tela de tabac blanc i una capa de gasa blanca, i després he folrat l'interior de la caputxa amb negre massís per bloquejar la llum)
  • Teixit negre translúcid per a panell frontal
  • Màquina de cosir
  • Tisores
  • Agulla i fil
  • Impressora 3D amb filament flexible (opcional)

Per estar al dia del que estic treballant, segueix-me a YouTube, Instagram, Twitter, Pinterest i subscriu-te al meu butlletí. Com a col·laborador d'Amazon, guanyo de les compres qualificatives que feu mitjançant els meus enllaços d'afiliació.

Abans de començar, és possible que vulgueu llegir els requisits previs següents:

  • Presentació de Gemma M0
  • NeoPixel Uberguide
  • Primera versió del projecte Hood (construït el 2015 amb Gemma clàssic i sense control sense fils)
  • Multitarea d'Arduino pt 3

Pas 1: Diagrama i codi del circuit

Diagrama i codi del circuit
Diagrama i codi del circuit

Les connexions del circuit són les següents:

  • Gemma D2 al receptor sense fils D0
  • Gemma D0 al receptor sense fils D1
  • Gemma 3V a receptor sense fils + 5V
  • Gemma GND al receptor sense fils GND i les joies NeoPixel GND
  • Dades de joies Gemma D1 a NeoPixel IN
  • Gemma Vout a les joies NeoPixel PWR
  • NeoPixel Jewel Data OUT a altres dades de NeoPixel Jewel IN

Vegeu el següent pas per obtenir notes de muntatge.

El codi es basa en l'esbós d'Arduino de Multi-tasca de Bill Earl i es modifica per controlar dues joies NeoPixel amb dues entrades digitals. Per tant, no haureu d’utilitzar el receptor sense fils, sinó que podríeu utilitzar botons del circuit. Descarregueu aquest fitxer de codi Arduino dels fitxers adjunts d’aquest pas o copieu i enganxeu des d’aquí en un esbós Arduino buit:

#include "Adafruit_NeoPixel.h"

// Tipus de patrons admesos: patró enum {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Direccions Patern compatibles: enum direction {FORWARD, REVERSE}; // Classe NeoPattern: derivada de la classe de classe Adafruit_NeoPixel NeoPatterns: public Adafruit_NeoPixel {public: // Variables de membres: patró ActivePattern; // quin patró està dirigit direcció adreça; // direcció per executar el patró Interval llarg sense signar; // mil·lisegons entre les actualitzacions sense signar long lastUpdate; // darrera actualització de la posició uint32_t Color1, Color2; // Quins colors s’utilitzen uint16_t TotalSteps; // nombre total de passos del patró uint16_t Índex; // pas actual dins del patró void (* OnComplete) (); // Devolució de trucada a la finalització del patró // Constructor: truca al constructor de classe base per inicialitzar NeoPatterns de tira (uint16_t píxels, uint8_t pin, uint8_t type, void (* callback) ()): Adafruit_NeoPixel (pixels, pin, type) {OnComplete = devolució de trucada; } // Actualitzeu el patró void Actualitzar () {if ((millis () - lastUpdate)> Interval) // hora per actualitzar {lastUpdate = millis (); switch (ActivePattern) {case RAINBOW_CYCLE: RainbowCycleUpdate (); trencar; case THEATER_CHASE: TheaterChaseUpdate (); trencar; cas COLOR_WIPE: ColorWipeUpdate (); trencar; cas ESCÀNER: ScannerUpdate (); trencar; cas FADE: FadeUpdate (); trencar; per defecte: trencar; }}} // Incrementar l'índex i restablir al final buida Increment () {if (Direcció == FORWARD) {Index ++; if (Índex> = TotalPassos) {Índex = 0; if (OnComplete! = NULL) {OnComplete (); // trucar a la devolució de trucada de la compilació}}} else // Direcció == REVERSA {--Index; if (Índex <= 0) {Índex = TotalSteps-1; if (Completat! = NULL) {Completat (); // trucar a la devolució de trucada de la competició}}}} // Inverteix la direcció del patró void Reverse () {if (Direcció == AVANT) {Direcció = INVERSA; Índex = TotalSteps-1; } else {Direcció = AVANT; Índex = 0; }} // Inicialitzar per a un RainbowCycle void RainbowCycle (interval uint8_t, direcció dir = AVANT) {ActivePattern = RAINBOW_CYCLE; Interval = interval; TotalSteps = 255; Índex = 0; Direcció = dir; } // Actualitzeu el patró de cicle Rainbow void RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ()) + Index) & 255)); } espectacle(); Increment (); } // Inicialitzar per a un Theater Chase buit TheaterChase (uint32_t color1, uint32_t color2, interval uint8_t, direcció dir = FORWARD) {ActivePattern = THEATER_CHASE; Interval = interval; TotalSteps = numPixels (); Color1 = color1; Color2 = color2; Índex = 0; Direcció = dir; } // Actualitzeu el patró de Chase de teatre void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i + Index)% 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); } } espectacle(); Increment (); } // Inicialitzar per a un ColorWipe buit ColorWipe (color uint32_t, interval uint8_t, direcció dir = AVANT) {ActivePattern = COLOR_WIPE; Interval = interval; TotalSteps = numPixels (); Color1 = color; Índex = 0; Direcció = dir; } // Actualitzeu el patró de neteja del color void ColorWipeUpdate () {setPixelColor (Índex, Color1); espectacle(); Increment (); } // Inicialitzar per a un escàner SCANNNER void (uint32_t color1, interval uint8_t) {ActivePattern = SCANNER; Interval = interval; TotalSteps = (numPixels () - 1) * 2; Color1 = color1; Índex = 0; } // Actualitzeu el patró de l’escàner void ScannerUpdate () {for (int i = 0; i > 1, verd (color) >> 1, blau (color) >> 1); torna dimColor; } // Estableix tots els píxels en un color (síncronament) buit ColorSet (uint32_t color) {for (int i = 0; i> 16) & 0xFF; } // Torna el component verd d'un color de 32 bits uint8_t Verd (color uint32_t) {return (color >> 8) & 0xFF; } // Torna el component Blau d'un color de 32 bits uint8_t Blau (color uint32_t) {torna color & 0xFF; } // Introduïu un valor de 0 a 255 per obtenir un valor de color. // Els colors són una transició r - g - b - torna a r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return Color (255 - WheelPos * 3, 0, WheelPos * 3); } else if (WheelPos <170) {WheelPos - = 85; retorn Color (0, WheelPos * 3, 255 - WheelPos * 3); } else {WheelPos - = 170; retorn Color (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; void JewelsComplete (); // Definiu alguns NeoPatterns per als dos anells i el pal // així com algunes rutines de finalització NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int LLUMINOSITAT = 50; // Inicialitzeu-ho tot i prepareu-vos per iniciar la configuració de void () {Serial.begin (115200); pinMode (2, INPUT); pinMode (0, INPUT); // Inicialitzar tots els píxels Jewels.setBrightness (BRIGHTNESS); Jewels.begin (); // Llança un patró Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Bucle principal void loop () {// Actualitzeu les joies. Jewels. Update (); // Canvieu els patrons en prémer un botó: if (digitalRead (2) == HIGH) // Premeu el botó # 1 {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = ESMOLIR; Jewels. TotalSteps = 100; Jewels. Interval = 1; } else if (digitalRead (0) == HIGH) // Botó # 2 premut {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = ESCÀNER; Jewels. TotalSteps = Jewels.numPixels (); Joies. Interval = 100; } else // Torna al funcionament normal {// Restaura tots els paràmetres del patró a valors normals Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = TEATRE_CASA; Jewels. TotalSteps = Jewels.numPixels (); Joies. Interval = 100; }} // ---------------------------------------------- -------------- // Rutines de finalització: se us crida en completar un patró // ---------------------- -------------------------------------- // Jewels Completion Callback void JewelsComplete () {// Canvi de color aleatori per a la propera exploració //Jewels. Color1 = Jewels. Wheel (random (255)); Joies. Reverse (); }

Pas 2: Muntatge del circuit

Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit

Un conjunt d’ajudes a les mans de terceres mans pot fer que el procés de soldar cables a components sigui molt senzill i divertit. Però no us preocupeu si no teniu un conjunt; sempre podeu utilitzar una cinta o una massilla de pòster per mantenir el tauler estable mentre soldeu.

Utilitzeu trossos prims de filferro varat (aproximadament 6in / 15cmin de longitud) per a les connexions entre les dues joies NeoPixel (diagrama del pas anterior). Si utilitzeu cables massa curts, no podreu col·locar els ulls LED prou separats i, si feu servir massa filferro, l’afluència us quedarà a la cara mentre porteu el vestit.

El circuit principal viurà a la zona de solapa (on el pit coincideix amb l’espatlla), de manera que per a les connexions entre la primera joia NeoPixel de la cadena i la Gemma, els cables seran molt més llargs. Podeu mantenir el cable fins a la zona dels ulls i traçar-lo per mesurar la distància que hauria de recórrer el fil, i després afegir una mica més per relaxar-vos i assegurar-vos.

Per connectar-me entre el Gemma i el receptor sense fils, vaig optar per utilitzar cables de prototipatge amb capçaleres femenines, ja que el receptor sense fils ja té connectats pins de capçalera.

Pas 3: alimentació de la bateria

Alimentació de la bateria
Alimentació de la bateria
Alimentació de la bateria
Alimentació de la bateria

Per alimentar el circuit, he utilitzat una bateria lipoly de 500 mAh. Si utilitzeu una bateria lipoly, és convenient protegir-la de rascades, punxades, abrasions, flexions i altres abusos. Podeu embolicar-lo amb una cinta de tela resistent o fer-ne un suport imprès en 3D.

Podeu utilitzar fàcilment un suport 3xAAA (porteu-lo a la butxaca en lloc de dins de la solapa).

Pas 4: patró de costura i tall de tela

Patró de costura i tall de tela
Patró de costura i tall de tela

Vaig utilitzar el mateix patró que vaig crear per a la primera versió d’aquest vestuari, que és un PDF de diverses pàgines que s’uneixen per crear les peces del patró.

Doblegueu el teixit, alineant les vores de la vora per alinear el gra del teixit i col·loqueu / fixeu les peces del patró al llarg del plec tal com es marca. Traça un marge de costura fora de les peces del patró (excepte el plec) d'aproximadament 3 cm amb un guix o un llapis. Com que el meu teixit era prim, volia duplicar-lo i, com que feia dues caputxes, vaig acabar tallant quatre de cada peça de patró al teixit principal i, després, una altra capa de gasa de gasa per afegir textura a l’exterior i capa de teixit negre com a folre per bloquejar l’entrada de llum. Crec que si hagués planejat amb anterioritat, podria haver deixat caure una de les capes blanques inicials i les caputxes haurien format només tres capes cadascuna en lloc de quatre.

Pas 5: Munteu peces de tela

Muntar peces de tela
Muntar peces de tela
Muntar peces de tela
Muntar peces de tela
Muntar peces de tela
Muntar peces de tela
Muntar peces de tela
Muntar peces de tela

Fixeu i cosiu dards / costures a les espatlles a cada peça del patró i, a continuació, alineeu les peces de la caputxa i la capa al llarg de la costura del coll amb els costats drets. Cosiu la costura, així com una costura recta a la part superior de la caputxa.

Proveu el capó. Doblega i fixa la vora frontal crua de la caputxa i fes-la cosir cap avall per crear una vora neta i un canal on passar un cable.

A continuació, talla un tros rodó de teixit negre per cobrir la part frontal de la caputxa. Això és el que donarà suport al circuit i amagarà la cara. Col·loqueu-lo al lloc mentre porteu la caputxa per adaptar-lo millor i, a continuació, cosiu-lo a mà o màquina a l'obertura de la caputxa.

Pas 6: Instal·leu Circuit a Hood

Instal·leu el circuit a Hood
Instal·leu el circuit a Hood

Vaig posar el capó, vaig encendre el circuit i vaig utilitzar un mirall per identificar la millor ubicació per als LED. Després vaig utilitzar pins per marcar les ubicacions i vaig cosir acuradament amb fil negre, fixant els forats de muntatge de les joies NeoPixel al tauler frontal negre pur. Els meus seuen just a sota dels meus ulls reals, cosa que fa que sigui més fàcil veure-los més enllà.

Esbandida i repeteix si fas una segona campana.

Pas 7: Poseu-lo

Poseu-lo!
Poseu-lo!
Poseu-lo!
Poseu-lo!
Poseu-lo!
Poseu-lo!
Poseu-lo!
Poseu-lo!

Són molt divertits de portar. És fàcil veure-ho i no és fàcil per als altres veure la teva cara. Tot plegat també és bastant còmode, gràcies a la caputxa de grans dimensions i el marc de filferro, que impedeixen que el teixit frontal es tiri a la cara.

El meu xicot i jo els portàvem a DJ per a la festa de Halloween del meu hackerspace aquest any i, tot i que podia veure la interfície del programari del projector làser, no podia distingir el petit text d’Abelton, així que vam haver d’adaptar-ne la millor vista. Vaig treure el panell de tela negra de la part superior de la caputxa i vaig plegar sobre l'excés. En una habitació fosca, no es podia diferenciar realment, tot i que la podeu veure a la foto de tots junts.

Gràcies per llegir! Si us agrada aquest projecte, potser us interessaran alguns dels meus altres:

  • 13 idees per a LEDs difusos
  • Senyal de tira LED difusa amb Arduino / Bluetooth
  • Comptador de subscriptors de YouTube amb ESP8266
  • Easy Infinity Mirror
  • 3 Errors Arduino per a principiants

Per estar al dia del que estic treballant, segueix-me a YouTube, Instagram, Twitter i Pinterest.

Recomanat: