A programação também não tem nada de mais praticamente é idêntica ao LED normal (Blink) sendo que em vez de programar 1 LED, programei 3 LEDs. Nessa programação a seguir usei a sequência de cores como a Tabela Verdade com 3 Variáveis, tanto na programação Básica de liga e desliga o LED e na programação for para ligar e desligar lentamente.
Programação:
int r = 11;
int g = 10;
int b = 9;
void setup()
{
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}
void loop()
{
// Programação Liga e Desliga os LED's
int M = 255;
int m = 0;
int t = 15;
// Tudo apagado
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, m);
delay(1000);
// Vermelho acesso
analogWrite(r, M);
analogWrite(g, m);
analogWrite(b, m);
delay(1000);
// Verde acesso
analogWrite(r, m);
analogWrite(g, M);
analogWrite(b, m);
delay(1000);
// Vermelho e Verde acesso
analogWrite(r, M);
analogWrite(g, M);
analogWrite(b, m);
delay(1000);
// Azul acesso
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, M);
delay(1000);
// Azul e Vermelho acesso
analogWrite(r, M);
analogWrite(g, m);
analogWrite(b, M);
delay(1000);
// Azul e Verde acesso
analogWrite(r, m);
analogWrite(g, M);
analogWrite(b, M);
delay(1000);
//Todos acessos
analogWrite(r, M);
analogWrite(g, M);
analogWrite(b, M);
delay(1000);
//Programação Acende e Apaga os LED's lentamente
// Vermelho
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, m);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, m);
delay(t);
}
// Verde
for(int i=0; i<255; i++)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
//Vermelho e Verde
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
//Azul
for(int i=0; i<255; i++)
{
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
//Azul e Vermelho
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
//Azul e Verde
for(int i=0; i<255; i++)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
//Todos
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
}
Para começar a explicar essa programação, primeiramente logo no inicio do loop, declarei 3 variáveis, M que seria o valor máximo (255) para as portas pwm, m que seria o valor mínimo (0) e t que seria o tempo que usei no delay na programação dor for.
A pequena diferença da programação liga e desliga o LED, seria que geralmente usamos digitalWrite(pin, HIGH ou LOW) usei o analogWrite(pin, 0-255), apesar que, poderia ter usado o primeiro, mas para fazer a programação do LED acender e apagar lentamente precisamos usar portas pwm para controlar a corrente que iria passar no terminal do componente.
Na programação for para cada LED usei 2 programações, 1 para acender e outra para acender lentamente, e claro fazendo as combinações como citei fazendo por Tabela Verdade.
Mas também podemos brincar com esse LED usando um LDR, a cada valor que o LDR detectar pode acender uma cor diferente, só para começar (sem mistura de cores), ai quem gosta de dificuldade a cada valor seria uma cor diferente mas já misturando todas as cores (ai usaria map na programação, futuramente explicarei).
Na filmagem a seguir, a câmera não mostra muito a cores quando se misturam, por isso na segunda filmagem coloquei uma folha de papel oficio porque dava para ver melhor as mistura de cores.
Vídeo:
5 comentários:
PROJETO SEMELHANTE DESENVOLVIDO COM SanUSB (PIC 18F2550)
http://www.youtube.com/watch?v=C_sP-Cfr8yg
parabéns!!!!
Fiz tudo certinho. mas a Cor Vermelha fica Fraca, o que devo fazer?
Diminui a resistencia da cor vermelha
Como faria no caso para obter a cor amarela no lugar do azul?
Postar um comentário