Tabla de contenido:
- Paso 1: esquemas y hardware
- Paso 2: Fabricación de la PCB que aloja los LED
- Paso 3: hacer la caja
- Paso 4: preparación de la corbata
- Paso 5: pegar las fibras ópticas
- Paso 6: Colocación de fibra óptica a través de la atadura
- Paso 7: pegar fibras ópticas al lazo
- Paso 8: el código
- Paso 9: Producto final
Video: Corbata LED Starry Sky: 9 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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
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
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
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
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
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
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
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
Creo que funcionó bien. La corbata no es demasiado gruesa, rígida, larga o pesada y el efecto estrella se ve increíble.
Recomendado:
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática Este / Oeste: 11 pasos (con imágenes)
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática de este a oeste: El proyecto: Una oficina de 200 pies cuadrados debe funcionar con baterías. La oficina también debe contener todos los controladores, baterías y componentes necesarios para este sistema. La energía solar y eólica cargará las baterías. Hay un pequeño problema de solo
Corbata de piano de trabajo: 6 pasos
Working Piano Necktie: La década de 1980 trajo consigo muchos grandes logros en la moda y la música. Había música de sintetizador, el funky keytar, leggings y la clásica corbata de piano para hombre. Estas corbatas fueron usadas de manera irónica (y poco irónica) por muchas personas de moda (y pasadas de moda)
Cree un panel meteorológico con la API de Dark Sky: 5 pasos (con imágenes)
Cree un panel de control meteorológico con la API de Dark Sky: Dark Sky se especializa en la visualización y el pronóstico del tiempo. El aspecto más genial de Dark Sky es su API meteorológica que podemos usar para recuperar los datos meteorológicos de casi cualquier parte del mundo. No solo el clima es lluvioso o soleado, sino también la temperatura
Cómo desmontar una computadora con sencillos pasos e imágenes: 13 pasos (con imágenes)
Cómo desmontar una computadora con sencillos pasos e imágenes: esta es una instrucción sobre cómo desmontar una PC. La mayoría de los componentes básicos son modulares y se quitan fácilmente. Sin embargo, es importante que se organice al respecto. Esto ayudará a evitar que pierda piezas y también a que el reensamblaje sea más fácil
SKY CAM, una solución de cámara aérea: 10 pasos (con imágenes)
SKY CAM, una solución de cámara aérea: este instructivo lo guiará a través de cómo hice un sistema de cámara de cable de control remoto (semiautónomo) para mi proyecto de productos electrónicos GCSE en la escuela y, con suerte, ¡le permitirá crear su propio sistema! Esto pretende ser una guía aproximada