Tabla de contenido:

Capucha para disfraz y ojos LED con control remoto: 7 pasos (con imágenes)
Capucha para disfraz y ojos LED con control remoto: 7 pasos (con imágenes)

Video: Capucha para disfraz y ojos LED con control remoto: 7 pasos (con imágenes)

Video: Capucha para disfraz y ojos LED con control remoto: 7 pasos (con imágenes)
Video: Puse a prueba la replica exacta del casco de iron man ¿Vale la pena? 2024, Mes de julio
Anonim

Por bekathwiaBecky Stern Sigue más por el autor:

Amigo de privacidad de webcam
Amigo de privacidad de webcam
Amigo de privacidad de webcam
Amigo de privacidad de webcam
Cinta métrica Antena Yagi con acopladores impresos en 3D
Cinta métrica Antena Yagi con acopladores impresos en 3D
Cinta métrica Antena Yagi con acopladores impresos en 3D
Cinta métrica Antena Yagi con acopladores impresos en 3D
Bordado De Zodiaco
Bordado De Zodiaco
Bordado De Zodiaco
Bordado De Zodiaco

Acerca de: ¡Hacer y compartir son mis dos mayores pasiones! En total, he publicado cientos de tutoriales sobre todo, desde microcontroladores hasta tejido. Soy un motociclista de la ciudad de Nueva York y una madre de perro que no se arrepiente. My wo… Más sobre bekathwia »

¡Twin Jawas! ¡Doble Orko! ¡Dos magos fantasmas de Bubble-Bobble! Esta capucha de disfraz puede ser cualquier criatura de ojos LED que elijas con solo cambiar los colores. Hice este proyecto por primera vez en 2015 con un circuito y un código muy simples, pero este año quería crear una versión mejorada con control de animación simultánea en dos trajes. Este circuito usa un simple control remoto de RF de corto alcance para controlar dos receptores en la misma frecuencia, y el código Arduino emplea interrupciones para lograr cambios de animación receptivos, basado en el código del tutorial de Bill Earl.

Para este proyecto, necesitará:

  • Dos joyas de NeoPixel
  • Microcontrolador GEMMA M0
  • Receptor inalámbrico de 315 MHz, tipo enganche
  • Control remoto inalámbrico RF de 315 MHz en configuración de cuatro, dos o un solo botón
  • Alambre trenzado recubierto de silicona (se recomienda 30 awg)
  • Soldador y soldadura
  • Pelacables
  • Cortadores al ras
  • Pinzas
  • Herramienta de ayuda de tercera mano (opcional)
  • Alfileres de coser
  • Tiza de sastre (opcional)
  • Alambre de acero galvanizado 19awg
  • Tela gruesa para capucha / capa (para esta versión utilicé dos capas de tela de tabaco blanca y una capa de estopilla blanca, luego forré el interior de la capucha con negro sólido para bloquear la luz)
  • Tejido negro translúcido para panel frontal
  • Máquina de coser
  • Tijeras
  • Aguja e hilo
  • Impresora 3D con filamento flexible (opcional)

Para estar al día en lo que estoy trabajando, sígueme en YouTube, Instagram, Twitter, Pinterest y suscríbete a mi boletín. Como Asociado de Amazon, gano por las compras que califiquen que realice utilizando mis enlaces de afiliados.

Antes de comenzar, es posible que desee leer sobre los siguientes requisitos previos:

  • Presentamos Gemma M0
  • Uberguía de NeoPixel
  • Primera versión de proyecto de campana (construida en 2015 con Gemma clásico y sin control inalámbrico)
  • Multitarea el Arduino pt 3

Paso 1: diagrama y código del circuito

Diagrama y código de circuito
Diagrama y código de circuito

Las conexiones del circuito son las siguientes:

  • Gemma D2 a receptor inalámbrico D0
  • Gemma D0 al receptor inalámbrico D1
  • Gemma 3V a receptor inalámbrico + 5V
  • Gemma GND a receptor inalámbrico GND y NeoPixel jewels GND
  • Datos de joyas de Gemma D1 a NeoPixel IN
  • Gemma Vout a las joyas NeoPixel PWR
  • Datos de joya de NeoPixel SALIDA a otros datos de joya de NeoPixel ENTRADA

Consulte el siguiente paso para ver las notas de montaje.

El código se basa en la multitarea del boceto de Arduino de Bill Earl, y se modifica para controlar dos joyas NeoPixel con dos entradas digitales. Por lo tanto, no tiene que usar el receptor inalámbrico; en su lugar, puede usar botones en el circuito. Descargue este archivo de código de Arduino de los archivos adjuntos de este paso, o copie y pegue desde aquí en un boceto de Arduino vacío:

#include "Adafruit_NeoPixel.h"

// Tipos de patrones admitidos: patrón de enumeración {NONE, RAINBOW_CYCLE, THEATER_CHASE, COLOR_WIPE, SCANNER, FADE}; // Patern direcciones soportadas: enum direction {FORWARD, REVERSE}; // Clase NeoPattern - derivada de la clase Adafruit_NeoPixel class NeoPatterns: public Adafruit_NeoPixel {public: // Variables miembro: pattern ActivePattern; // qué patrón se está ejecutando direction Direction; // dirección para ejecutar el patrón unsigned long Interval; // milisegundos entre actualizaciones unsigned long lastUpdate; // última actualización de la posición uint32_t Color1, Color2; // Qué colores están en uso uint16_t TotalSteps; // número total de pasos en el patrón uint16_t Index; // paso actual dentro del patrón void (* OnComplete) (); // Devolución de llamada al completar el patrón // Constructor: llama al constructor de clase base para inicializar la tira de NeoPatterns (uint16_t píxeles, uint8_t pin, uint8_t type, void (* callback) ()): Adafruit_NeoPixel (píxeles, pin, tipo) {OnComplete = llamar de vuelta; } // Actualiza el patrón void Update () {if ((millis () - lastUpdate)> Interval) // tiempo de actualización {lastUpdate = millis (); cambiar (ActivePattern) {caso CICLO_ARCOIRIS: Actualización del ciclo del arco iris (); rotura; case THEATER_CHASE: TheaterChaseUpdate (); rotura; case COLOR_WIPE: ColorWipeUpdate (); rotura; CASO ESCÁNER: ScannerUpdate (); rotura; case FADE: FadeUpdate (); rotura; predeterminado: descanso; }}} // Incrementa el índice y reinicia al final void Increment () {if (Dirección == FORWARD) {Index ++; if (Índice> = Pasos totales) {Índice = 0; if (OnComplete! = NULL) {OnComplete (); // llamar a la devolución de llamada de competencia}}} else // Dirección == REVERSE {--Index; si (Índice <= 0) {Índice = TotalSteps-1; if (OnComplete! = NULL) {OnComplete (); // llamar a la devolución de llamada de la competencia}}}} // Dirección del patrón inverso void Reverse () {if (Dirección == ADELANTE) {Dirección = REVERSE; Índice = TotalSteps-1; } else {Dirección = ADELANTE; Índice = 0; }} // Inicializar para un RainbowCycle void RainbowCycle (intervalo uint8_t, dirección dir = FORWARD) {ActivePattern = RAINBOW_CYCLE; Intervalo = intervalo; TotalSteps = 255; Índice = 0; Dirección = dir; } // Actualizar el patrón de ciclo de Rainbow void RainbowCycleUpdate () {for (int i = 0; i <numPixels (); i ++) {setPixelColor (i, Wheel (((i * 256 / numPixels ()) + Index) & 255)); } show(); Incremento(); } // Inicializar para una persecución de teatro void TheaterChase (uint32_t color1, uint32_t color2, uint8_t intervalo, dirección dir = ADELANTE) {ActivePattern = THEATER_CHASE; Intervalo = intervalo; TotalSteps = numPixels (); Color1 = color1; Color2 = color2; Índice = 0; Dirección = dir; } // Actualizar el patrón de persecución de teatro void TheaterChaseUpdate () {for (int i = 0; i <numPixels (); i ++) {if ((i + Index)% 3 == 0) {setPixelColor (i, Color1); } else {setPixelColor (i, Color2); } } show(); Incremento(); } // Inicializar para un ColorWipe vacío ColorWipe (uint32_t color, uint8_t intervalo, dirección dir = FORWARD) {ActivePattern = COLOR_WIPE; Intervalo = intervalo; TotalSteps = numPixels (); Color1 = color; Índice = 0; Dirección = dir; } // Actualizar el patrón de borrado de color void ColorWipeUpdate () {setPixelColor (Index, Color1); show(); Incremento(); } // Inicializar para un ESCÁNER void Escáner (uint32_t color1, intervalo uint8_t) {ActivePattern = SCANNER; Intervalo = intervalo; TotalSteps = (numPixels () - 1) * 2; Color1 = color1; Índice = 0; } // Actualizar el patrón del escáner void ScannerUpdate () {for (int i = 0; i > 1, Verde (color) >> 1, Azul (color) >> 1); return dimColor; } // Establecer todos los píxeles en un color (sincrónicamente) void ColorSet (uint32_t color) {for (int i = 0; i> 16) & 0xFF; } // Devuelve el componente verde de un color de 32 bits uint8_t Green (uint32_t color) {return (color >> 8) & 0xFF; } // Devuelve el componente azul de un color de 32 bits uint8_t Blue (uint32_t color) {return color & 0xFF; } // Ingrese un valor de 0 a 255 para obtener un valor de color. // Los colores son una transición r - g - b - de regreso 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; return Color (0, WheelPos * 3, 255 - WheelPos * 3); } else {WheelPos - = 170; return Color (WheelPos * 3, 255 - WheelPos * 3, 0); }}}; anular JewelsComplete (); // Definir algunos NeoPatterns para los dos anillos y el palo // así como algunas rutinas de finalización NeoPatterns Jewels (14, 1, NEO_GRBW + NEO_KHZ800, & JewelsComplete); const int BRILLO = 50; // Inicializa todo y prepárate para iniciar void setup () {Serial.begin (115200); pinMode (2, ENTRADA); pinMode (0, ENTRADA); // Inicializar todos los píxeles Jewels.setBrightness (BRIGHTNESS); Jewels.begin (); // Inicia un patrón Jewels. TheaterChase (Jewels. Color (255, 50, 0), Jewels. Color (0, 0, 0, 50), 100); } // Bucle principal void loop () {// Actualiza las joyas. Jewels. Update (); // Cambiar patrones al presionar un botón: if (digitalRead (2) == HIGH) // Botón # 1 presionado {Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = FADE; Jewels. TotalSteps = 100; Jewels. Interval = 1; } else if (digitalRead (0) == HIGH) // Botón # 2 presionado {Jewels. Color1 = Jewels. Color (255, 0, 0); Jewels. ActivePattern = ESCÁNER; Jewels. TotalSteps = Jewels.numPixels (); Joyas Intervalo = 100; } else // Volver al funcionamiento normal {// Restaurar todos los parámetros del patrón a los valores normales Jewels. Color1 = Jewels. Color (255, 50, 0); Jewels. ActivePattern = THEATER_CHASE; Jewels. TotalSteps = Jewels.numPixels (); Joyas Intervalo = 100; }} // ---------------------------------------------- -------------- // Rutinas de finalización: recibe una llamada al completar un patrón // ---------------------- -------------------------------------- // Devolución de llamada de finalización de joyas void JewelsComplete () {// Cambio de color aleatorio para el siguiente escaneo //Jewels. Color1 = Jewels. Wheel (random (255)); Jewels. Reverse (); }

Paso 2: ensamblar el circuito

Ensamblar circuito
Ensamblar circuito
Ensamblar circuito
Ensamblar circuito

Un conjunto de pinzas de tercera mano de ayuda puede hacer que el proceso de soldadura de cables a componentes sea muy sencillo y divertido. Pero no se preocupe si no tiene un juego; Siempre puede usar cinta adhesiva o masilla para carteles para mantener la tabla estable mientras suelda.

Utilice trozos delgados de cable trenzado (aproximadamente 6 pulgadas / 15 cm de longitud) para las conexiones entre las dos joyas de NeoPixel (diagrama en el paso anterior). Si usa cables que son demasiado cortos, no podrá colocar sus ojos LED lo suficientemente separados, y si usa demasiado cable, la holgura llegará a su cara mientras usa el disfraz.

El circuito principal vivirá en el área de la solapa (donde su pecho se encuentra con su hombro), por lo que para las conexiones entre la primera joya de NeoPixel en la cadena y la Gemma, los cables serán mucho más largos. Puede sostener el cable hasta el área de los ojos y estirarlo para medir la distancia que debe recorrer el cable, luego agregar un poco más para aflojarlo y asegurarlo.

Para conectar el Gemma y el receptor inalámbrico, elegí usar cables de prototipos con encabezados hembra, ya que el receptor inalámbrico ya tiene clavijas de encabezado adjuntas.

Paso 3: Energía de la batería

Potencia de la batería
Potencia de la batería
Potencia de la batería
Potencia de la batería

Para alimentar el circuito, utilicé una batería lipoly de 500 mAh. Si usa una batería lipoly, es aconsejable protegerla de arañazos, perforaciones, abrasiones, flexiones y otros abusos. Puede envolverlo en una cinta de tela resistente o hacer un soporte impreso en 3D para él.

En su lugar, podría usar fácilmente un soporte 3xAAA (llévelo en su bolsillo en lugar de dentro de la solapa).

Paso 4: patrón de costura y corte de tela

Patrón de costura y tela de corte
Patrón de costura y tela de corte

Usé el mismo patrón que creé para la primera versión de este disfraz, que es un PDF de varias páginas que se junta para crear las piezas del patrón.

Doble la tela, alineando los bordes del orillo para alinear la veta de la tela y coloque las piezas del patrón a lo largo del pliegue como está marcado. Trace un margen de costura fuera de las piezas del patrón (excepto el pliegue) de aproximadamente 5/8 pulgadas / 3 cm con una tiza o un lápiz para marcar. Como mi tela era delgada, quería doblarla, y como hice dos capuchas, terminé cortando cuatro de cada pieza del patrón en la tela principal, luego otra capa de gasa de gasa para agregar textura al exterior, y finalmente una capa de tela negra como revestimiento para bloquear la entrada de luz. Creo que si hubiera planeado con anticipación para eso, podría haber dejado caer una de las capas blancas iniciales y las capuchas habrían consistido en solo tres capas cada una en lugar de cuatro.

Paso 5: Ensamble las piezas de tela

Ensamblar piezas de tela
Ensamblar piezas de tela
Ensamblar piezas de tela
Ensamblar piezas de tela
Ensamblar piezas de tela
Ensamblar piezas de tela
Ensamblar piezas de tela
Ensamblar piezas de tela

Sujete con alfileres y cosa pinzas / costuras de hombros en cada pieza del patrón, luego alinee las piezas de la capucha y la capa a lo largo de la costura del cuello con los lados derechos juntos. Cosa la costura, así como una costura recta en la parte superior de la capucha.

Pruébate la capucha. Dobla y sujeta con alfileres el borde frontal sin terminar de la capucha y cóselo para crear un borde limpio y un canal para que pase un cable.

A continuación, corte un trozo redondeado de tela negra transparente para cubrir la parte delantera de la capucha. Esto es lo que apoyará el circuito y ocultará tu rostro. Sujete con alfileres mientras usa la capucha para un mejor ajuste, luego cósela a mano o a máquina a la abertura de la capucha.

Paso 6: Instale el circuito en la campana

Instale el circuito en el capó
Instale el circuito en el capó

Me puse el capó, encendí el circuito y usé un espejo para descubrir la mejor ubicación para los LED. Luego usé alfileres para marcar las ubicaciones y cosí cuidadosamente con hilo negro, uniendo los orificios de montaje en las joyas de NeoPixel al panel frontal negro puro. Los míos se encuentran justo debajo de mis ojos reales, lo que hace que sea más fácil ver más allá de ellos.

Enjuague y repita si está haciendo una segunda capucha.

Paso 7: ¡Úselo

¡Póntelo!
¡Póntelo!
¡Póntelo!
¡Póntelo!
¡Póntelo!
¡Póntelo!
¡Póntelo!
¡Póntelo!

Son muy divertidos de usar. Es fácil de ver y no es fácil que otros vean tu cara. Todo es bastante cómodo también, gracias a la capucha de gran tamaño y el marco de alambre, que evita que la tela frontal cubra tu cara.

Mi novio y yo usamos estos para DJ en la fiesta de Halloween de mi hackerspace este año, y aunque podía ver la interfaz del software del proyector láser, él no podía distinguir el texto diminuto en abelton, así que tuvimos que adaptar el suyo para tener un mejor vista. Quité el panel de tela negra de la parte superior de la capucha y doblé el exceso. En una habitación oscura, realmente no se podía notar la diferencia entre los dos, aunque se puede ver en la foto de nosotros juntos arriba.

¡Gracias por leer! Si te gusta este proyecto, puede que te interesen algunos de mis otros:

  • 13 ideas para difundir LED
  • Señal de tira de LED difusa con Arduino / Bluetooth
  • Contador de suscriptores de YouTube con ESP8266
  • Espejo Infinito Fácil
  • 3 errores de Arduino para principiantes

Para estar al día en lo que estoy trabajando, sígueme en YouTube, Instagram, Twitter y Pinterest.

Recomendado: