Decorar seu ambiente de trabalho pode ser uma das coisas mais difíceis de serem bem cumpridas, afinal, você vai ver sua decoração praticamente todo dia. A ideia de decorar seu ambiente com luminárias de desenhos customizados e luzes variadas me veio a mente e me convenceu que é uma das melhores formas de decorar qualquer lugar. O projeto é bem simples, e faz uso de uma cortadora a laser e de um LED multicores, junto de um microcontrolador pequeno para implementar a variação das cores. O resultado foi muito satisfatório, apesar de haver muito espaço para melhoria do projeto ainda.
A luminária é montada com quatro lados cortados na cortadora a laser, com os cortes formando desenhos feitos em qualquer software de CAD, no meu caso utilizei o Autocad padrão. A luz RGB então ilumina por dentro os cortes e projeta a imagem para o ambiente (ao menos essa era a ideia, faltou intensidade do LED para iluminar tanto). Abaixo dá pra ver os desenhos que eu fiz e como ficaram as peças da luminária. Também desenhei uma peça no topo que fixa todos os lados e dá suporte para pendurar a luminária e também pendurar o circuito com o controlador lá dentro.
Planejei o circuito para ocupar o menor espaço possível, com a menor quantidade de componentes. Cheguei em uma placa de 2,5x2,5cm, de forma que quatro placas podem ser tiradas de uma 5x5cm. O circuito é bastante simples e utiliza somente do PIC 12F629A, de um Led RGB, três resistores para cada alimentação das cores e um resistor de 10k para conectar o Master Clear do PIC no positivo. Também utilizei um borne para conectar a alimentação de 5V da placa.
Com relação ao código utilizado no PIC, como o microcontrolador não possui saída PWM utilizei uma aproximação de PWM através de delays alternados fazendo o brilho entre duas cores variar, e assim criando um efeito pulsante.
#include <12F629.H>
#fuses HS,NOPROTECT,NOBROWNOUT,NOWDT,NOPUT
#use delay(INTERNAL=4M)
#define blue PIN_A0
#define green PIN_A1
#define red PIN_A2
int16 a = 1000;
int16 b = 0;
int16 c = 100;
int16 i = 500;
int16 j = 0;
void main()
{
set_tris_a(0b001000);
output_a(0);
output_high(red);
while (1)
{
while (a > 350)
{
while (i < 15)
{
output_high(red);
output_high(blue);
delay_us(a);
output_low(red);
delay_us(b);
output_low(blue);
delay_us(c);
i = i+1;
}
a = a-7;
b = b-2;
c = c+2;
i = 0;
}
while (a < 700)
{
while (i < 15)
{
output_high(red);
output_high(blue);
delay_us(a);
output_low(red);
delay_us(b);
output_low(blue);
delay_us(c);
i = i+1;
}
a = a+7;
b = b+2;
c = c+2;
i = 0;
}
}
}
Comentários
Postar um comentário