Crie um Porta-Retrato de Coração LED Incrível com Arduino – Guia DIY Passo a Passo
Neste Projeto Arduino, mostrarei como fazer um incrível porta-retrato de coração LED usando Arduino. Você pode assistir ao vídeo a seguir ou ler o artigo escrito abaixo para mais detalhes.
À primeira vista, parece um porta-retrato comum, mas, ao clicar no interruptor na parte traseira, ele se transforma em um porta-retrato extraordinário. Construir este Projeto Arduino é muito divertido e pode ser um presente perfeito para o Dia dos Namorados, Aniversário ou Aniversário de Casamento para seus entes queridos. Então, vamos começar a construir.
Preparação do Porta-Retrato

Primeiro, precisamos de um porta-retrato simples de 18 x 13 cm e uma placa de fibra cortada no tamanho do porta-retrato na qual faremos furos para inserir os LEDs. Então, precisamos desenhar e imprimir uma forma de coração com 32 LEDs que será usada como padrão. Faremos os furos para os LEDs usando uma furadeira.

Uma vez terminada a perfuração dos furos, começaremos a inserir os LEDs. Precisamos inserir todos os LEDs do mesmo lado, com o Anodo ou o terminal mais longo apontando para fora, para que possamos dobrá-los e, posteriormente, soldar os Anodos de todos os LEDs juntos.

Uma vez que soldamos todos os LEDs, devemos verificar se todos estão funcionando corretamente. Para isso, precisamos conectar o pino positivo de 5 Volts VCC aos Anodos dos LEDs através de um resistor de 220 Ohms e, usando o pino Ground, verificar cada LED se ele acende.
Esquemas de Circuito
Aqui está o esquema de circuito deste projeto e você pode encontrar uma lista completa de componentes necessários para este projeto abaixo dele. Usaremos o Arduino Nano e dois CIs TLC5940 para controlar os LEDs. O TLC5940 é um Driver de LED de 16 Canais que fornece saídas PWM. Você pode encontrar mais detalhes sobre como conectar e usar este CI com o Arduino no meu tutorial específico sobre Arduino e TLC5940.

Componentes Necessários para este Projeto Arduino
Você pode obter os componentes em qualquer um dos sites abaixo:
- Arduino Nano
- LEDs Vermelhos Ultra Brilhantes
- Interruptor
- Conector de Alimentação (Power Jack)
- Adaptador DC 5V >1A
- 2 x Drivers de LED TLC5940
- 2 x Resistores 2K
- Capacitores 1uF e 0.1uF
Montagem
Aqui, primeiro inseriremos os soquetes de CI e os headers de pinos no lugar e os soldaremos na PCB de prototipagem para que possamos conectar os CIs e o Arduino Nano a eles. Também precisamos de dois headers de pinos adicionais com alguns slots para a alimentação, ou os pinos de 5 Volts VCC e Ground, bem como dois capacitores para desacoplamento.

Precisamos ter muito cuidado ao conectar os componentes, pois pode ficar muito confuso com tantos fios se conectarmos algo errado. Neste ponto, precisamos fazer o upload do código Arduino para garantir que conectamos tudo corretamente.

Código Arduino
Vamos dar uma olhada no código Arduino que fiz para este projeto. Usaremos a biblioteca TLC5940 feita por Alex Leone. Uma vez baixada e instalada esta biblioteca, precisamos modificar o arquivo tlc_config.h e alterar o valor da variável NUM_TLCS para o número de CIs TLC5940 conectados em série e, no nosso caso, esse valor é 2.

Com isso feito, agora podemos endereçar facilmente todos os LEDs de 0 a 31. No início, também precisamos definir algumas variáveis necessárias para o programa. Na seção setup, precisamos iniciar os TLCs e, na seção loop, fazer o programa. Organizei o programa em 9 estágios diferentes ou shows de luz dos LEDs usando a declaração switch.
Por exemplo, vamos dar uma olhada no primeiro estágio. Geramos valores INT aleatórios de 0 a 31 e os usamos como endereços para os LEDs. A função Tlc.set() é usada para definir qual LED acenderemos. O primeiro parâmetro é o endereço do LED, e o segundo parâmetro é o valor de brilho do LED ou o valor PWM que varia de 0 a 4095. No entanto, isso não acenderá o LED imediatamente, apenas define qual LED acenderá da próxima vez que a função Tlc.update() for executada. Usando esta declaração "if", ativamos o segundo estágio após acender 8 LEDs aleatórios. Agora, vamos dar uma olhada em mais um exemplo, digamos o estágio 3. Usando este loop "for", definimos todos os 32 LEDs para acender quando a função Tlc.update() for executada. Após meio segundo de atraso, usando a função Tlc.clear(), apagamos e desligamos todos os LEDs. De maneira semelhante, você pode modificar o código e adicionar mais shows de luz por conta própria.
/* Porta-Retrato Coração LED - Projeto Arduino
* Programa feito por Dejan Nedelkovski,
* www.HowToMechatronics.com
*/
/* Biblioteca TLC5940 por Alex Leone, https://code.google.com/archive/p/tlc5940arduino/
* Você precisa modificar tlc_config.h localizado na biblioteca TLC5940
* e alterar o valor da variável NUM_TLCS para o número de CIs 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) {
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
//-----Estágio 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;
}
}
Toque Final
Uma vez terminada a programação e sabendo que tudo funciona bem, precisamos fixar os LEDs na placa de fibra e fiz isso usando uma pistola de cola quente. Então, precisamos fazer uma caixa de cobertura para a eletrônica usando uma pistola de cola quente e 4 peças adicionais de fibra cortadas no tamanho certo.

O que resta agora é conectar as linhas de alimentação vindas do interruptor e do conector de alimentação que estão inseridos na fibra do porta-retrato, adicionar a foto, fixar toda a caixa ao porta-retrato e pronto!

Aqui você pode assistir ao vídeo de demonstração completo do Porta-Retrato Coração LED.
Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo!
Processo de manufatura
- Construa Seu Próprio LUMAZOID: Visualizador de Música DIY com Arduino
- Construa um Sensor de Batimento Cardíaco Infravermelho Confiável com Arduino: Guia Passo a Passo
- Detector de Frequência de Áudio com Arduino – Meça Picos de Som com Módulo de Alta Sensibilidade
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Construa um Voltímetro DIY com Arduino e Display Nokia 5110 – Guia Passo a Passo
- Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
- Construa um Temporizador Regressivo Confiável com Arduino e Display de 7 Segmentos SparkFun
- Misturador de Cores RGB com Arduino – Projeto DIY para Iniciantes
- Dispositivo de Tratamento Radiônico EMR DIY com Arduino Nano