Tabla de contenido:

Corbata LED Starry Sky: 9 pasos (con imágenes)
Corbata LED Starry Sky: 9 pasos (con imágenes)

Video: Corbata LED Starry Sky: 9 pasos (con imágenes)

Video: Corbata LED Starry Sky: 9 pasos (con imágenes)
Video: EL INCREIBLE HOMBRE SPIDERMAN! 8 2024, Noviembre
Anonim
Image
Image
Corbata Starry Sky Led
Corbata Starry Sky Led
Corbata Starry Sky Led
Corbata Starry Sky Led

Hace un tiempo encontré un juguete para niños con fibra óptica en una tienda de un dólar y comencé a pensar en lo que podía hacer con él.

Una de las locas ideas que tuve fue hacer una corbata con efecto de cielo estrellado.

Todavía tenía algunos arduino pro mini, tableros adafruit y baterías por ahí que probablemente encajarían en este proyecto.

Así que tan pronto como encontré una bonita corbata ancha en una casa de empeños en mi ciudad y encontré una caja que podría encajar con el hardware, decidí ir a por ella e intentar construirla.

Este instructivo te muestra cómo lo hice.

Funciona con un arduino pro mini, cargador adafruit powerboost 500, emmerich icr 18650nh-sp y 5 LED blancos. El código hace que el brillo del LED cambie de forma aleatoria. (Los primeros 40 segundos del video tienen una velocidad de 3x)

Paso 1: esquemas y hardware

Esquemas y hardware
Esquemas y hardware
Esquemas y hardware
Esquemas y hardware

Estoy usando el siguiente hardware:

- PCB con LEDs blanco hielo y resistencias de 220 Ohm.

- Arduino pro mini (utilicé una imitación)

- Cargador Adafruit Powerboost 500

- Accu de iones de litio Emmerich ICR-18650NH-SP

- Fibras ópticas (en diferentes tamaños)

Paso 2: Fabricación de la PCB que aloja los LED

Fabricación de la PCB que aloja los LED
Fabricación de la PCB que aloja los LED
Fabricación de la placa de circuito impreso que aloja los LED
Fabricación de la placa de circuito impreso que aloja los LED
Fabricación de la PCB que aloja los LED
Fabricación de la PCB que aloja los LED

Corté una tira de un PCB para sostener los LED y usé los pines del LED para soldarlo al PCB principal.

Conecté todos los cátodos (-) a GND, y usé la mitad de los pines para soldarlos pegados a la PCB principal.

Conectado todos los ánodos (+) a resistencias, y con cables al arduino.

Cada LED debe estar conectado a uno de los siguientes puertos PWM: 3, 5, 6, 9, 10, 11

Tonto, cometí muchos errores con este proyecto y olvidé verificar los puertos PWM correctos, así que tuve que resolver algunos más tarde. Probado con High / Low, así que solo lo noté más tarde.

Comencé con 7 LED, pero solo había 6 puertos PWM y uno de los LED que resolví murió. Solo mantuve los 5 LED en funcionamiento y no estoy usando el sexto.

Paso 3: hacer la caja

Haciendo la caja
Haciendo la caja
Haciendo la caja
Haciendo la caja
Haciendo la caja
Haciendo la caja
Haciendo la caja
Haciendo la caja

Usé un Bosch GRO (como una Dremel) y un taladro para cortar la forma de la batería, el botón, el puerto micro-usb, los encabezados del Arduino y las fibras ópticas. (¡usa una mascarilla antipolvo!)

Pegó la batería al estuche con 2 bandas.

Se utilizaron tornillos para montar la placa Adafruit y la PCB.

La fricción al abrir y cerrar dañó algunos cables. Tuve que resolverlos y usar pegamento para evitar que volviera a suceder.

Paso 4: preparación de la corbata

Preparando la corbata
Preparando la corbata
Preparando la corbata
Preparando la corbata
Preparando la corbata
Preparando la corbata

Se quitó la costura de la parte inferior de la corbata para que se ajustara a la hoja de goma.

Para ocultar el hardware y poder acceder a él si fuera necesario, decidí usar una cremallera.

No soy bueno con una máquina de coser, así que mi dulce mamá puso una cremallera en la parte de atrás de la corbata.

Una vez hecho esto, pegué la lámina de goma en la corbata. Tenía miedo de usar demasiado pegamento que saturaría la tela y sería visible desde el frente, así que intenté nivelarlo y no usar demasiado. En general, se ve bien, pero en algunos lugares noté demasiado o muy poco pegamento, porque atravesó la tela o no se adhirió muy bien a la tela. Afortunadamente, esto es apenas visible desde una distancia cercana con luz brillante.

La caja y la corbata ya están listas. ¡Es hora de pegar las fibras ópticas!

Paso 5: pegar las fibras ópticas

Pegar las fibras ópticas
Pegar las fibras ópticas
Pegar las fibras ópticas
Pegar las fibras ópticas
Pegar las fibras ópticas
Pegar las fibras ópticas
Pegar las fibras ópticas
Pegar las fibras ópticas

El juguete tenía un gran haz de cables de fibra óptica que se rompían fácilmente. Intenté pegarlos uno por uno al principio, pero pronto noté que sería mejor hacer pequeños paquetes y pegarlos al LED de una vez. Eso haría más fácil mantenerlo estable hasta que el pegamento se seque. Echó a perder el primer LED al descubrir esto.

¡Asegúrate de usar un pegamento transparente! El que usé se secó muy lento y el pegamento de secado rápido que probé en el primer LED se volvió blanco, lo que hizo que algunas fibras del primer LED fueran menos brillantes.

Pegué pequeñas láminas de goma negra para evitar que la luz se filtrara en la parte superior y para separar los LED.

Una de las hojas impidió que la caja se cerrara, así que agregué una banda elástica para mantener la tapa cerrada.

Paso 6: Colocación de fibra óptica a través de la atadura

Colocación de fibra óptica a través de la atadura
Colocación de fibra óptica a través de la atadura
Colocación de fibra óptica a través de la atadura
Colocación de fibra óptica a través de la atadura
Colocación de fibra óptica a través de la atadura
Colocación de fibra óptica a través de la atadura

Comenzando por la parte inferior, pellizqué agujeros con una aguja y pasé las fibras una por una. Las fibras de cada LED se extienden al azar a través de la corbata.

Pegué una tira negra en la parte posterior que se suponía que iba hasta la parte más pequeña de la corbata para mantener el peso de la caja, pero después de pasar todos los cables y sentir la tensión de los cables, decidí pegar todo a la corbata fue una mejor idea y cortar la tira.

Dado que los cables de fibra óptica del juguete eran tan cortos, fue difícil colocarlos por toda la corbata. Estaba limitado a la hora de colocar la caja y me costó mucho hacer todo tan plano como quería.

Paso 7: pegar fibras ópticas al lazo

Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo
Pegado de fibras ópticas al lazo

Pegué todos los cables de fibra óptica a la lámina de goma para evitar que los cables se salieran de la lámina de goma y para que la atadura quedara plana.

Para asegurarme de que no pegué la abrazadera a la corbata al presionarla, puse un poco de papel en el medio. No se ve tan bien, pero funciona bien. Y no lo ve cuando está cerrado.

Después de que el pegamento se secó, corté los cables en el frente y corté un poco la hoja de goma justo encima del cable más alto, porque la atadura era demasiado larga.

Las fotos con la camisa blanca se hacen antes de cortar el último trozo de goma.

Paso 8: el código

Debajo del código que escribí para la corbata.

Todos los LED tienen un "promedio" establecido (en realidad, no es un promedio, sino un brillo medio).

Tan pronto como alcance ese promedio, decidirá con una probabilidad de 3/4 pasar a un brillo más bajo. También establece aleatoriamente un nuevo brillo mínimo, brillo máximo, tiempo de espera para brillo mínimo y máximo y la velocidad a la que aumenta o disminuye cada ronda (1-255) a partir de 5 valores preestablecidos. Luego hará un ciclo hasta que alcance el promedio nuevamente. Solo 2 LED pueden estar en un ciclo alto al mismo tiempo.

Cada estado está representado por un valor entero (1-7) que determina si va a promedio bajo, bajo promedio, esperando bajo, actualizando, etc.

Para obtener información sobre cómo cargar código en arduino, visite www.arduino.cc

/ * Starry Sky Tie * * Este es un script para desvanecer aleatoriamente 5 LED de un brillo promedio a un brillo más bajo * o más alto con configuraciones aleatorias más bajas, más altas y de tiempo * para que parezcan un cielo estrellado cuando se usa con fibra óptica. * En este caso estos se implementarán en un empate. * * Posibilidad de subir / bajar = 1/4 hacia arriba, 3/4 hacia abajo, con un máximo de 2 * subiendo al máximo al mismo tiempo. * * El promedio permanece igual. * Las opciones de tiempo mínimo, máximo y de tiempo cambian aleatoriamente * de 5 opciones cada vez que un LED vuelve a alcanzar el promedio. * * Creado por Billy Jaspers, mayo de 2019. *

/ Declarar alfileres

int LED01 = 3; int LED02 = 5; int LED03 = 6; int LED04 = 9; int LED05 = 11;

// Variables de tiempo

unsigned long currentTime; tiempo de espera largo sin firmar [5]; unsigned long lastRound;

// Variables LED

int brightMin [5] = {10, 10, 10, 10, 10}; // Brillo mínimo int brightAvg [5] = {200, 200, 200, 200, 200}; // Brillo promedio int brightMax [5] = {240, 240, 240, 240, 240}; // Brillo máximo int timeWaitLow [5] = {1000, 1000, 1000, 1000, 1000}; // Tiempo de espera int timeWaitAvg [5] = {5000, 5000, 5000, 5000, 5000}; // Tiempo de espera int timeWaitMax [5] = {4000, 3000, 3000, 3000, 3000}; // Tiempo de espera int incremento [5] = {2, 5, 4, 5, 2}; // Incremento de brillo int currentBright [5] = {200, 230, 210, 210, 235}; // Brillo actual

// Posibilidades de las variables LED

int brightMinPos [5] = {5, 20, 40, 5, 20}; // Posibilidades de brillo mínimo int brightMaxPos [5] = {240, 245, 230, 225, 245}; // Posibilidades máximas de brillo int timeLowPos [5] = {3000, 5000, 4000, 2000, 1000}; // Tiempo de espera en posibilidades de bajo brillo int timeHighPos [5] = {3000, 1000, 500, 2000, 4000}; // Tiempo de espera con posibilidades de alto brillo int timeAvgPos [5] = {3000, 5000, 4000, 7000, 8000}; // Tiempo de espera sobre las posibilidades de brillo promedio int incrementPos [5] = {2, 4, 5, 3, 1}; // incremento en las posibilidades de brillo

// Variables

bool startup = true; // ¿Es necesario iniciar la configuración de inicio?

// Variables direccionales

/ * 0 = Esperando en promedio 1 = pasando de promedio a bajo 2 = esperando bajo 3 = pasando de bajo a promedio 4 = pasando de promedio a máximo 5 = esperando a máximo 6 = pasando de alto a promedio 7 = Actualizando variables * / int statusLED [5] = {0, 0, 0, 0, 0}; int amountHighLED = 0; int refreshRate = 50; bool statusWaiting [5] = {falso, falso, falso, falso, falso}; // ¿Está esperando el Led?

// Variables aleatorias

long randomNumber; // Long para almacenar un número aleatorio long randomNumberTwo; // Largo para almacenar el segundo número aleatorio

// contadores

int i = 0; // Contador para bucle principal

configuración vacía () {

Serial.begin (115200); // Iniciar serial randomSeed (analogRead (A0)); // Establecer semilla aleatoria

// Declarar salidas

pinMode (LED01, SALIDA); pinMode (LED02, SALIDA); pinMode (LED03, SALIDA); pinMode (LED04, SALIDA); pinMode (LED05, SALIDA); }

// Escribe datos en LED

anular writeToLED () {analogWrite (LED01, currentBright [0]); analogWrite (LED02, currentBright [1]); analogWrite (LED03, currentBright [2]); analogWrite (LED04, currentBright [3]); analogWrite (LED05, currentBright [4]); }

// Bucle principal

void loop () {if (inicio) {// Configuración de inicio lastRound = millis (); // Establecer lastRound para el arranque writeToLED (); // Escribe los datos de inicio en el LED startup = false; // Apagar el inicio} currentTime = millis (); // Establecer la hora actual

if (currentTime - lastRound> = refreshRate) {

for (i = 0; i <5; i ++) {if (statusLED == 7) {// -7- Actualizando Led randomNumber = random (5); BrightMin = BrightMinPos [número aleatorio]; // Establecer valor aleatorio para brillo mínimo randomNumber = random (5); BrightMax = BrightMaxPos [número aleatorio]; // Establecer valor aleatorio para brillo máximo randomNumber = random (5); timeWaitLow = timeLowPos [número aleatorio]; // Establecer un valor aleatorio para un tiempo de espera bajo randomNumber = random (5); timeWaitMax = timeHighPos [randomNumber]; // Establecer un valor aleatorio para un tiempo de espera alto randomNumber = random (5); timeWaitAvg = timeAvgPos [número aleatorio]; // Establecer un valor aleatorio para el tiempo medio de espera randomNumber = random (5); incremento = incrementPos [randomNumber]; // Establecer valor aleatorio para el valor de incremento randomNumber = random (2); // Establecer valor aleatorio para la dirección randomNumberTwo = random (2); // Establecer valor aleatorio para la dirección if (randomNumber == 1 && randomNumberTwo == 0 && amountHighLED = brightAvg ) {statusLED = 0; // Si está en el punto más bajo: Vaya a Esperando promedio} else {currentBright = currentBright + incremento ; // Else: Brillo más alto}} else if (statusLED == 2) {// -2- Waiting Low if (! StatusWaiting ) {// Si no espera: waitTime = millis (); // Establecer el tiempo de espera statusWaiting = true; // Empieza a esperar} else if (statusWaiting && currentTime-waitTime > = timeWaitLow ) {// Si la espera Y timeWaitAvg ha pasado: statusWaiting = false; // Dejar de esperar statusLED = 3; // Establece statusLed en Waiting for update}} else if (statusLED == 1) {// -1- Going Avg to Low if (currentBright <= brightMin ) {statusLED = 2; // Si está en el punto más bajo: Vaya a Esperando bajo} else {currentBright = currentBright -increment ; // Else: Lower Brightness}} else if (statusLED == 6) {// -6- Going Max to Avg if (currentBright = timeWaitMax ) {// Si la espera Y timeWaitAvg ha pasado: estadoEsperando = falso; // Dejar de esperar statusLED = 6; // Establece statusLed en Waiting for update}} else if (statusLED == 4) {// -4- Going Avg to Max if (currentBright > = brightMax ) {statusLED = 5; // Si está en el punto más bajo: Vaya a Esperando alto} else {currentBright = currentBright + incremento ; // Else: Brillo más alto}} else if (statusLED == 0) {// -0- Esperando en promedio if (! StatusWaiting ) {// Si no está esperando: waitTime = millis (); // Establecer el tiempo de espera statusWaiting = true; // Empiece a esperar} else if (statusWaiting && currentTime-waitTime > = timeWaitAvg ) {// Si la espera Y timeWaitAvg ha pasado: statusWaiting = false; // Dejar de esperar statusLED = 7; // Establece statusLed en Esperando actualización}}} i = 0; lastRound = milis (); // Establecer cuando finaliza la última ronda. writeToLED (); // Escribe todos los datos en los LED}}

Paso 9: Producto final

Image
Image
Producto final
Producto final
Producto final
Producto final

Creo que funcionó bien. La corbata no es demasiado gruesa, rígida, larga o pesada y el efecto estrella se ve increíble.

Recomendado: