Você está na página 1de 12

Procurar

Pesquisar Laboratorio de Garagem


(arduino, eletrnica, robotica, hacking)
Registre-se
Acessar
Laboratorio de Garagem (arduino, eletrnica, robotica, hacking)
#42
Incio
Perfil
Garagistas
Incubadora
Loja
rea Tcnica
Discusses
Galeria
Grupos
Sobre
Todas as mensagens do blog
Meu blog
Adicionar

Tutorial: Controle de fita de LED Endereada


Postado por Laboratrio de Garagem em 1 setembro 2014 s 15:30
Exibir blog

Ola garagistas no tutorial de hoje iremos demonstrar como controlar atravs do Arduno UNO uma
fita de LED de 1 metro com 60 LEDs endereados.
Material utilizados:
1x Fita de LED 1M 60 LEDs
1x Arduno UNO Rev.3
1x Protoboard
1x Resistor 330R
1x Capacitor 10uF
1. Fita de LED Endereada

Imagem 1 - Fita de LED Endereada

Caractersticas:
Esta fita de LED mede 1 metro e vem com 60 LEDs endereados. Como est fita no
selada, ela no tem proteo contra gua, porm, voc tem acesso a eles, ento poder
fazer modificaes facilmente. Voc conseguir controlar cada LED RGB individualmente
podendo assim criar vrios efeitos bacanas, para seu carro, seu quarto, ou outro lugar que
sua imaginao permitir.
Obs: Est fita tem 1M e vem em um rolo, estes LEDs so determinados com um espao de
0.25 cm entre eles, conectores de 3 pinos e um conector de alimentao de 2 fios.
2. Endereo Hexa da cores utilizadas

Figura 1 - Tabela de cores em Hexadecimal


A tabela acima foi utilizada como base em nosso tutorial, temos mais de 16 milhes de cores que
podem ser implementadas em cada LED (256), podemos enviar esses cdigos em Hexa e os LEDs
iram apresentar exatamente a mesma cor.
3. Opo de fonte externa

Imagem 2 - Fonte universal


Cada LED consome 60mA, logo 60 LEDs no nosso caso 60mA x 60 = 3,6A. Nesse tutorial no foi
utilizado fonte, quando acionamos cada LED individualmente o brilho manteve no mximo, j quando
acionamos todos de uma vez seu brilho diminuiu devido a falta de corrente o que no recomendado
manter por muito tempo pois pode danificar o seu computador.
4. Montagem

Figura 2 - Montagem
O resistor utilizado em srie com o pino de dados deve estar no valor entre 220R e 470R e o capacitor
utilizado em paralelo com a fonte de alimentao deve estar entre 10uF/16v e 100uF/16v.
Para fazer o download da biblioteca clique aqui.
Para fazer o download do WS2812_Definitions.h.
5. Sketch 1
/* SparkFun WS2812 Breakout Board Example
SparkFun Electronics
date: July 25, 2013
license: GNU GENERAL PUBLIC LICENSE
Requires the Adafruit NeoPixel library. It's awesome, go get it.
https://github.com/adafruit/Adafruit_NeoPixel
This simple example code runs three sets of animations on a group of WS2812
breakout boards. The more boards you link up, the better these animations
will look.
For help linking WS2812 breakouts, checkout our hookup guide:
https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide
Before uploading the code, make sure you adjust the two defines at the
top of this sketch: PIN and LED_COUNT. Pin should be the Arduino pin
you've got connected to the first pixel's DIN pin. By default it's
set to Arduino pin 4. LED_COUNT should be the number of breakout boards
you have linked up.
*/
#include <Adafruit_NeoPixel.h>

#define P 0x000000//PRETO
#define Z 0x0000FF//AZUL
#define E 0x008000//VERDE
#define R 0x800080//ROXO
#define V
0xFF0000//VERMELLHO
#define L
0xFFA500//LARANJA
#define R 0xFFC0CB//ROSE
#define A 0xFFFF00//AMARELO
#define B 0xFFFFFF//BRANCO
#define PIN 4// Pino de controle
#define LED_COUNT 60// Quantidade de LED's
//Cria uma instncia da Classe Adafruit NeoPixel chamado "leds"
Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
unsigned long time;//Contar o tempo
unsigned long timeout;//Estouro
int brilho[3];//Recebe os valores da serial
int i=0;//Quantidade de caracteres recebida pela serial
int posicao=0;
int flag=0;//Indica que foi recebida informao pela serial
char temp,cor;//Armazena dados recebidos pela serial
void setup()
{
Serial.begin(9600);//Inicia a serial com baud rate
leds.begin(); // Inicia a fita de LED
clearLEDs(); // Apaga todos os LEDs
leds.show(); // Atualiza o estados dos LEDs
}
void loop()
{
//-----------------------------------------------------------------------------------------// Retorna o tempo em milisegundos desde que o Arduno comeou a rodar,
time = millis()%2;//Divide por 2 e salva o resto
if(time==1||time==0)//Compara se o resto igual a 0 ou 1 e sempre vai ser
{
timeout++;// Cronmetro
if (timeout>500)// Compara se houve estouro do tempo
{
i=0;// Zera o quantidades de caracteres recebidos
flag=0;// Zera o aviso de que foi recebido algum dado na serial
}
}
//-------------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------------if (Serial.available()>0)// Verifica se houve recepo


{
flag=1;//Sinaliza que houve recepo
timeout=0;// Zera o o tempo de reset
//-----------------------------------------------------------------------------------------temp = Serial.read();// Armazena o que foi recebido pela serial
brilho[i]=temp-48;// Decrementa 48 na tabela ascii para converter de decimal para char
i++;// Contabiliza um recebimento
}
//--------------------------------------------------------------------------if (timeout>200&&flag==1)// Compara se houve estouro do timeout(se ficou um tempo sem
recepo) e se houve recepo
{
flag=0;// Sera aviso de recepo
// Envia para serial informaes em % e resoluo de disparo
posicao=brilho[0];
cor= brilho[1]+ 48;
switch (cor)
{
case 'Z'://AZUL
leds.setPixelColor(posicao,Z);//Aciona o LED requerido
leds.show();//Atualiza o LED
break;
case 'E'://VERDE
leds.setPixelColor(posicao,E);//Aciona o LED requerido
leds.show();//Atualiza o LED
break;
case 'V'://VERMELHO
leds.setPixelColor(posicao,V);//Aciona o LED requerido
leds.show();//Atualiza o LED
break;
case 'A'://AMARELO
leds.setPixelColor(posicao,A);//Aciona o LED requerido
leds.show();//Atualiza o LED
break;
case 'B'://BRANCO
leds.setPixelColor(posicao,B);//Aciona o LED requerido
leds.show();//Atualiza o LED
break;
case 'P'://APAGA
leds.setPixelColor(posicao,0);//Aciona o LED requerido
leds.show();//Atualiza o LED
break;

}
}
}
//Funo liga led individual
void ligaLED(int g, unsigned long fita)//Recebe a posio e tempo de Delay
{
leds.setPixelColor(g, fita);//Aciona o LED requerido
leds.show();//Atualiza o LED
}

//Funo apaga LED individual


void apagaLED(int g, unsigned long fita)//Recebe a posio e tempo de Delay
{
leds.setPixelColor(g, 0);//Desaciona o LED requerido
leds.show();//Atualiza o LED
}
//Funo apaga LEDs geral
void clearLEDs()
{
for (int p=0; p<LED_COUNT; p++)
{
leds.setPixelColor(p, 0);
leds.show();
}
}
6. Sketch 2

/* SparkFun WS2812 Breakout Board Example


SparkFun Electronics
date: July 25, 2013
license: GNU GENERAL PUBLIC LICENSE
Requires the Adafruit NeoPixel library. It's awesome, go get it.
https://github.com/adafruit/Adafruit_NeoPixel
This simple example code runs three sets of animations on a group of WS2812
breakout boards. The more boards you link up, the better these animations
will look.
For help linking WS2812 breakouts, checkout our hookup guide:
https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide
Before uploading the code, make sure you adjust the two defines at the
top of this sketch: PIN and LED_COUNT. Pin should be the Arduino pin
you've got connected to the first pixel's DIN pin. By default it's
set to Arduino pin 4. LED_COUNT should be the number of breakout boards

you have linked up.


*/
#include <Adafruit_NeoPixel.h>
#include "WS2812_Definitions.h"
#define PIN 4// Pino de controle
#define LED_COUNT 60// Quantidade de LED's
unsigned long fita=0x000000;// recebe valores em hexa referente as cores
unsigned long pri=0x000033;
unsigned long seg=0x003201;
unsigned long ter=0x320001;
//Cria uma instncia da Classe Adafruit NeoPixel chamado "leds"
Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_COUNT, PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
leds.begin(); // Inicia a fita de LED
clearLEDs(); // Apaga todos os LEDs
leds.show(); // Atualiza o estados dos LEDs
}
void loop()
{
int l=0;//conta a posio dos LEDs
int DD=50;//Variavel de envio do valor do delay
for(int k=0; k<6;k++)//1 lao
{
for(int j=0;j<6;j++)//2 lao
{
for(int i=0;i<5;i++)//3 lao
{
if( l>= LED_COUNT) l=0;//Verifica se ultrapassou o limite da fita
fita=fita+pri;//Coforme a tabela inseri o valor na constante e incrementa
ligaLED(l,DD);//Envia a posio na fita e envia o tempo ligado
//apagaLED(l,DD);//Envia a posio na fita e envia o tempo desligad//// Tirar comentario caso
queira utilizar um unico LED
l++;//Incrementa posio na fita
}
if(j<5)//Compara se no ultrapassou o limite pois foram feitas duas somas seguidas e uma tera
que ser ignorada
{
if(l>= LED_COUNT)l=0;
fita=fita+seg;
ligaLED(l,DD);
// apagaLED(l,DD);// Tirar comentario caso queira utilizar um unico LED
l++;//Incrementa posio na fita
}
}
if(k<5)//Compara se no ultrapassou o limite pois foram feitas duas somas seguidas e uma tera
que ser ignorada
{

if(l>= LED_COUNT)l=0;
fita=fita+ter;
ligaLED(l,DD);
//apagaLED(l,DD);// Tirar comentario caso queira utilizar um unico LED
l++;//Incrementa posio na fita
}
}
}
//Funo liga led individual
void ligaLED(int g, int d)//Recebe a posio e tempo de Delay
{
delay(d); //Seta o tempo
leds.setPixelColor(g, fita);//Aciona o LED requerido
leds.show();//Atualiza o LED
}

//Funo apaga LED individual


void apagaLED(int g, int d)//Recebe a posio e tempo de Delay
{
delay(d); //Seta o tempo
leds.setPixelColor(g, 0);//Desaciona o LED requerido
leds.show();//Atualiza o LED
}
//Funo apaga LEDs geral
void clearLEDs()
{
for (int p=0; p<LED_COUNT; p++)
{
leds.setPixelColor(p, 0);
leds.show();
}
}
Referncias:
https://learn.sparkfun.com/tutorials/ws2812-breakout-hookup-guide
http://www.labdegaragem.org/loja/fita-de-led-enderecada.html
Exibies: 2054
Tags: Controle, Endereada, LED, Tutorial:, de, fita
Curtir
2 membros curtem isto
Compartilhar Twitter

Facebook

Curtir

21

< Post Anterior


Prximo Post >
Comentar

Voc precisa ser um membro de Laboratorio de Garagem (arduino, eletrnica,


robotica, hacking) para adicionar comentrios!
Entrar em Laboratorio de Garagem (arduino, eletrnica, robotica, hacking)

Comentrio de Mario filho em 14 setembro 2014 s 11:20


Por que no tenho acesso para baixar o tutorial? (searamf@gmail.com)
RSS
Bem-vindo a
Laboratorio de Garagem (arduino, eletrnica, robotica, hacking)

Registre-se
ou acesse
Or sign in with:

Publicidade
Convide um amigo para o Lab!

Loja Lab de Garagem

Teensy 2.0
Por: R$ 95,90
Ou em at 18x de R$ 6,39

Mini Relay Shield


Por: R$ 17,50
Ou em at 3x de R$ 6,07

Temp&Humi Sensor

Por: 25,00
Ou em at 05x de R$ 5,30

Estao de Solda
Temperatura Ajustvel - 50W
Por: R$ 204,00
Ou em at 18x de R$ 13,60
2014 Criado por Marcelo Rodrigues.
Badges | Relatar um incidente | Termos de servio
Entrar no bate-papo

Você também pode gostar