Crea un Marco de Fotos Corazón LED con Arduino: Guía DIY Paso a Paso
En este proyecto de Arduino te mostraré cómo hacer un increíble marco de fotos con corazón LED usando Arduino. Puedes ver el siguiente vídeo o leer el artículo escrito a continuación para más detalles. A primera vista parece un marco de fotos ordinario, pero una vez que accionas el interruptor en la parte trasera se convierte en un marco de fotos extraordinario. Construir este proyecto de Arduino es muy divertido y puede ser un regalo perfecto para San Valentín, cumpleaños o aniversario para tus seres queridos. Así que comencemos a construir. Primero necesitamos un marco de fotos simple de 18 x 13 cm y un tablero de fibra cortado al tamaño del marco en el que haremos agujeros para insertar los LEDs. Luego necesitamos dibujar e imprimir una forma de corazón con 32 LEDs que se usará como patrón. Haremos los agujeros para los LEDs usando un taladro. Una vez que terminemos de taladrar los agujeros, comenzaremos a insertar los LEDs. Necesitamos insertar todos los LEDs del mismo lado, con el ánodo o la pata más larga apuntando hacia afuera para que podamos doblarlos y luego soldar los ánodos de todos los LEDs juntos. Una vez que hayamos soldado todos los LEDs, deberíamos verificar si todos funcionan correctamente. Para eso, necesitamos conectar el pin positivo de 5 voltios VCC a los ánodos de los LEDs a través de una resistencia de 220 ohmios y, usando el pin de tierra, verificar cada LED si se enciende. Aquí está el esquema del circuito de este proyecto y puedes encontrar una lista completa de componentes necesarios para este proyecto debajo de él. Usaremos el Arduino Nano y dos ICs TLC5940 para controlar los LEDs. El TLC5940 es un controlador de LED de 16 canales que proporciona salidas PWM. Puedes encontrar más detalles sobre cómo conectar y usar este IC con Arduino en mi tutorial particular de Arduino y TLC5940. Puedes conseguir los componentes en cualquiera de los sitios a continuación: Aquí, primero insertaremos los zócalos de IC y los conectores de pines en su lugar y los soldaremos a la PCB de prototipado para poder conectar los ICs y el Arduino Nano a ellos. También necesitamos dos conectores de pines adicionales con un par de ranuras para la alimentación, o los pines de 5 voltios VCC y Tierra, así como dos condensadores para desacoplamiento. Debemos tener mucho cuidado al conectar los componentes porque puede volverse muy desordenado con tantos cables si conectamos algo mal. En este punto, necesitamos subir el código de Arduino para asegurarnos de que hemos conectado todo correctamente. Echemos un vistazo al código de Arduino que he hecho para este proyecto. Usaremos la librería TLC5940 hecha por Alex Leone. Una vez que descarguemos e instalemos esta librería, necesitamos modificar el archivo tlc_config.h y cambiar el valor de la variable NUM_TLCS al número de ICs TLC5940 conectados en serie y en nuestro caso ese valor es 2. Con esto hecho, ahora podemos direccionar fácilmente todos los LEDs del 0 al 31. Al principio también necesitamos definir algunas variables necesarias para el programa. En la sección setup necesitamos iniciar los TLCs y en la sección loop hacer el programa. Organicé el programa en 9 etapas diferentes o espectáculos de luces de los LEDs usando la sentencia switch. Por ejemplo, echemos un vistazo a la primera etapa. Generamos valores INT aleatorios del 0 al 31 y los usamos como direcciones para los LEDs. La función Tlc.set() se usa para configurar qué LED encendemos. El primer parámetro es la dirección del LED, y el segundo parámetro es el valor de brillo del LED o el valor PWM que va de 0 a 4095. Sin embargo, esto no encenderá el LED de inmediato, solo configura qué LED se encenderá la próxima vez que se ejecute la función Tlc.update(). Usando esta sentencia "if" activamos la segunda etapa después de encender 8 LEDs aleatorios. Ahora veamos un ejemplo más, digamos la etapa 3. Usando este bucle "for" configuramos los 32 LEDs para que se enciendan cuando se ejecute la función Tlc.update(). Después de medio segundo de delay, usando la función Tlc.clear() apagamos y limpiamos todos los LEDs. De manera similar, puedes modificar el código y agregar más espectáculos de luces por tu cuenta. Una vez terminada la programación y sabiendo que todo funciona bien, necesitamos asegurar los LEDs al tablero de fibra y lo hice usando una pistola de pegamento caliente. Luego necesitamos hacer una caja de cubierta para la electrónica usando una pistola de pegamento caliente y 4 piezas más de tablero de fibra cortadas a medida. Lo que queda ahora es conectar las líneas de alimentación que vienen del interruptor y el conector de alimentación que están insertados en el tablero de fibra del marco de fotos, agregar la foto, asegurar toda la caja al marco de fotos y ¡listo! Aquí puedes ver el vídeo de demostración completo del Marco de Fotos Corazón LED. ¡Siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación!Preparación del Marco de Fotos



Esquema del Circuito

Componentes Necesarios para este Proyecto Arduino
Ensamblaje


Código Arduino

/* Marco de Fotos Corazón LED - Proyecto Arduino
* Programa hecho por Dejan Nedelkovski,
* www.HowToMechatronics.com */
/* Librería TLC5940 por Alex Leone, https://code.google.com/archive/p/tlc5940arduino/
* Necesitas modificar tlc_config.h ubicado en la librería TLC5940
* y cambiar el valor de la variable NUM_TLCS al número de ICs TLC5940 conectados */
#include "Tlc5940.h"
int stage = 0;
int randomNumber;
int count = 0;
int brightness = 3500;
int brightUp = 50;
int dir=1;
void setup() {
Tlc.init();
}
void loop() {
switch(stage) {
//-----Etapa 1
case 0:
randomNumber = (int)random(0,31);
Tlc.set(randomNumber,4095);
delay(1500);
Tlc.update();
if(count >= 8) {
stage = 1;
count = 0;
} else {
++count;
}
break;
//-----Etapa 2
case 1:
delay(75);
for(int i=31;i>=0;i--) {
Tlc.set(i,4095);
delay(100);
Tlc.update();
}
delay(500);
Tlc.clear();
Tlc.update();
stage = 2;
delay(500);
break;
//-----Etapa 3
case 2:
for(int i=0;i<=31;i++) {
Tlc.set(i,4095);
}
Tlc.update();
delay(500);
Tlc.clear();
Tlc.update();
delay(350);
if(count > 6) {
stage = 3;
count = 0;
} else {
++count;
}
break;
//-----Etapa 4
case 3:
for (int i=0;i<=15;i++) {
Tlc.set(i,4095);
Tlc.set(31-i,4095);
Tlc.update();
delay(70);
}
delay(50);
for (int i=15;i>=0;i--) {
Tlc.set(i,0);
Tlc.set(31-i,0);
Tlc.update();
delay(70);
}
for (int i=15;i>=0;i--) {
Tlc.set(i,4095);
Tlc.set(31-i,4095);
Tlc.update();
delay(70);
}
for (int i=0;i<=15;i++) {
Tlc.set(i,0);
Tlc.set(31-i,0);
Tlc.update();
delay(70);
}
delay(50);
Tlc.clear();
Tlc.update();
delay(100);
if(count > 1) {
stage = 4;
count = 0;
} else {
++count;
}
break;
//-----Etapa 5
case 4:
for (int i=15;i>=count;i--) {
Tlc.set(32-i,4095);
Tlc.update();
delay(5);
Tlc.set(32-i-1,0);
Tlc.update();
delay(5);
Tlc.set(i,4095);
Tlc.update();
delay(5);
Tlc.set(i+1,0);
Tlc.update();
delay(50);
}
if(count > 15) {
Tlc.set(16,4095);
Tlc.update();
delay(2000);
stage = 5;
count = 0;
} else {
++count;
}
break;
//-----Etapa 6
case 5:
for (int i=0;i<=31;i++) {
Tlc.set(i,brightness);
Tlc.update();
}
Tlc.update();
brightness = brightness + brightUp;
if (brightness>=3500) { brightUp=-50; ++count; }
if (brightness<=150) { brightUp=50; }
if(count > 6) {
stage = 6;
count = 0;
brightness = 3500;
Tlc.clear();
Tlc.update();
}
delay(40);
break;
//-----Etapa 7
case 6:
for (int i=0;i<=30;i+=2) {
Tlc.set(i,4095);
Tlc.set(i+1,0);
}
Tlc.update();
delay(500);
for (int i=0;i<=30;i+=2) {
Tlc.set(i,0);
Tlc.set(i+1,4095);
}
Tlc.update();
delay(500);
if(count > 20) {
stage = 7;
count = 0;
} else {
++count;
}
break;
//-----Etapa 8
case 7:
for(int i=31;i>=16;i--) {
Tlc.clear();
Tlc.update();
delay(2);
Tlc.set(i,4095);
Tlc.set(i+1,2000);
Tlc.set(i+2,1000);
Tlc.set(i+3,500);
Tlc.set(i+4,300);
Tlc.set(i+5,200);
Tlc.set(i+6,100);
Tlc.set(i+7,50);
Tlc.set(i+8,0);
Tlc.set(i-16,4095);
Tlc.set(i-15,2000);
Tlc.set(i-14,1000);
Tlc.set(i-13,500);
Tlc.set(i-12,300);
Tlc.set(i-11,200);
Tlc.set(i-10,100);
Tlc.set(i+-9,50);
Tlc.set(i-8,0);
Tlc.update();
delay(50);
}
if(count > 8) {
for(int i=31;i>=0;i--) {
Tlc.set(i,4095);
Tlc.update();
delay(50);
}
stage = 8;
count = 0;
} else {
++count;
}
break;
//-----Etapa 9
case 8:
for(int i=31;i>=0;i--) {
Tlc.set(i+8,4095);
Tlc.set(i+7,2000);
Tlc.set(i+6,1000);
Tlc.set(i+5,500);
Tlc.set(i+4,300);
Tlc.set(i+3,200);
Tlc.set(i+2,100);
Tlc.set(i+1,50);
Tlc.set(i,0);
Tlc.update();
delay(50);
}
for(int i=31;i>=0;i--) {
Tlc.set(i,4095);
}
Tlc.update();
delay(10);
if(count > 8) {
delay(8000);
Tlc.clear();
Tlc.update();
stage = 0;
count = 0;
} else {
++count;
}
break;
}
}Lenguaje: Arduino (arduino)Toque Final


Proceso de manufactura
- Construya su propio LUMAZOID: Visualizador de música DIY con Arduino
- Construye un Sensor de Ritmo Cardíaco por Infrarrojos Fiable con Arduino: Guía Paso a Paso
- Detector de frecuencia de audio con Arduino – Mide los picos de sonido más intensos
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un voltímetro DIY con Arduino y pantalla Nokia 5110 – Guía paso a paso
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun
- Mezclador de Colores RGB con Arduino – Proyecto DIY para Principiantes
- Construye un dispositivo de tratamiento radiónico EMR con Arduino DIY
- Construye tu Propio Coche RC Porsche con Arduino: Guía Paso a Paso