Menu

LED Tricolor

As cores podem ser geradas basicamente por dois processos, que misturam as cores primárias segundo a ótica aditiva (para luz, cores básicas vermelho, verde e azul – RGB – mais utilizada no mundo digital) ou subtrativa (para tintas, cores básicas vermelho, amarelo e azul – RYB, ou cores básicas ciano, magenta e amarelo – CYM – mais utilizada no mundo da impressão).

Para saber mais, veja: https://www.cambridgeincolour.com/pt-br/tutoriais/color-perception.htm.

 

LEDS – cores aditivas, RGB.

Vamos trabalhar com um LED Tricolor. Mas, antes, vamos ver como ficaria com três LEDs correspondentes às cores primárias para luz: Vermelho (Red), Verde (Green) e Azul (Blue). As iniciais das palavras em Inglês correspondem ao tipo de codificação – RGB.

I – Com três LEDs independentes:

Esquemático:

Ligação 1 – ou

ou Ligação 2

(note que aposição do resistor foi alterada, mas continua em série com o LED correspondente)

Para usarmos, vamos utilizar saídas tipo PWM (as que possuem um pequeno sinal ‘~’ antes do número), pois elas vão permitir um controle da quantidade de potência que será enviada para cada LED. Desta forma, poderemos enviar ‘um pouco’ de luz vermelha, outro de luz verde e outro de luz azul, combinando-as para formar uma outra cor (veja aqui:http://www.cdme.im-uff.mat.br/matrix/matrix-html/matrix_color_cube/matrix_color_cube_br.html as combinações possíveis).

Para que as cores sejam próximas daquelas planejadas, a quantidade de luz emitida por cada uma das cores primárias tem que ser o mais precisa possível. Você vai conseguir isso combinando valores diferentes para os resistores que limitam a corrente dos LEDS. Os valores sugeridos para o início dos experimentos são de 220 ohms (vermelho, vermelho, marrom) para o LED vermelho, 180 (marrom, cinza, marrom) ohms para o LED verde e 150 (marrom, verde, marrom) ohms para o LED azul.

O que queremos é combinar um percentual diferente das cores básicas para obter uma outra cor. Por exemplo, Vermelho: 100% (valor 255) + Verde: 100% (valor 255) + Azul: 0% (valor 0) resultará em amarelo.

Um possível código para gerar cores (veja: http://www.cdme.im-uff.mat.br/matrix/matrix-html/matrix_color_cube/matrix_color_cube_br.html) está a seguir. Ele mostra várias cores combinando os leds, exibindo-as durante 1 segundo (você consegue perceber as cores? E se os LEDs estivessem mais próximos?):

//——

//os pinos tem que ser PWM -> tem um sinal ~ na frente
#define ledR 9
#define ledG 10
#define ledB 11

const int valoresRGB[173][3] PROGMEM = {
 {255,117,24}, //"Abobora ",
 {127,255,212}, //"Agua-marinha ",
 {102,205,170}, //"Agua-marinha media ",
 {227,38,54}, //"Alizarim ",
 {255,255,0}, //"Amarelo ",
 {255,255,224}, //"Amarelo claro ",
 {173,255,47}, //"Amarelo esverdeado ",
 {255,191,0}, //"Ambar ",
 {221,160,221}, //"Ameixa ",
 {153,102,204}, //"Ametista ",
 {255,235,205}, //"Amendoa ",
 {123,160,91}, //"Aspargo ",
 {0,0,255}, //"Azul ",
 {240,248,255}, //"Azul alice ",
 {106,90,205}, //"Azul ardosia ",
 {72,61,139}, //"Azul ardosia escuro ",
 {123,104,238}, //"Azul ardosia medio ",
 {70,130,180}, //"Azul ao ",
 {176,196,222}, //"Azul ao claro ",
 {95,158,160}, //"Azul cadete ",
 {240,255,255}, //"Azul celeste ",
 {0,127,255}, //"Azul celeste brilhante ",
 {173,216,230}, //"Azul claro ",
 {0,71,171}, //"Azul cobalto ",
 {135,206,235}, //"Azul ceu ",
 {135,206,250}, //"Azul ceu claro ",
 {0,191,255}, //"Azul ceu profundo ",
 {0,0,139}, //"Azul escuro ",
 {100,149,237}, //"Azul flor de milho ",
 {30,144,255}, //"Azul furtivo ",
 {18,10,143}, //"Azul marinho ",
 {25,25,112}, //"Azul meia-noite ",
 {0,0,205}, //"Azul medio ",
 {176,224,230}, //"Azul pplvora ",
 {65,105,225}, //"Azul real ",
 {138,43,226}, //"Azul violeta ",
 {244,196,48}, //"Acafrao ",
 {245,245,220}, //"Bege ",
 {128,0,0}, //"Bordo ",
 {128,0,32}, //"Borgonha ",
 {255,255,255}, //"Branco ",
 {250,235,215}, //"Branco antigo ",
 {248,248,255}, //"Branco fantasma ",
 {255,250,240}, //"Branco floral ",
 {245,245,245}, //"Branco fumaca ",
 {255,222,173}, //"Branco navajo ",
 {205,127,50}, //"Bronze ",
 {210,180,140}, //"Canela ",
 {240,230,140}, //"Caqui ",
 {216,191,216}, //"Cardo ",
 {220,20,60}, //"Carmesim ",
 {210,180,140}, //"Castanho claro ",
 {237,145,33}, //"Cenoura ",
 {222,49,99}, //"Cereja ",
 {210,105,30}, //"Chocolate ",
 {0,255,255}, //"Ciano ",
 {224,255,255}, //"Ciano claro ",
 {0,139,139}, //"Ciano escuro ",
 {128,128,128}, //"Cinza ",
 {112,128,144}, //"Cinza ardosia ",
 {119,136,153}, //"Cinza ardosia claro ",
 {47,79,79}, //"Cinza ardosia escuro ",
 {211,211,211}, //"Cinza claro ",
 {169,169,169}, //"Cinza escuro ",
 {105,105,105}, //"Cinza fosco ",
 {220,220,220}, //"Cinza medio ",
 {184,115,51}, //"Cobre ",
 {255,245,238}, //"Concha ",
 {255,127,80}, //"Coral ",
 {240,128,128}, //"Coral claro ",
 {240,220,130}, //"Couro ",
 {255,253,208}, //"Creme ",
 {255,228,196}, //"Creme de marisco ",
 {245,255,250}, //"Creme de menta ",
 {189,183,107}, //"Caqui escuro ",
 {251,206,177}, //"Damasco ",
 {218,165,32}, //"Dourado ",
 {184,134,11}, //"Dourado escuro ",
 {238,232,170}, //"Dourado palido ",
 {255,36,0}, //"Escarlate ",
 {80,200,120}, //"Esmeralda ",
 {183,65,14}, //"Ferrugem ",
 {61,43,31}, //"Fuligem ",
 {255,0,255}, //"Fuchsia ",
 {46,139,87}, //"Hortela",
 {75,0,130}, //"Indigo ",
 {0,168,107}, //"Jade ",
 {255,69,0}, //"Jambo ",
 {255,165,0}, //"Laranja ",
 {255,140,0}, //"Laranja escuro ",
 {230,230,250}, //"Lavanda ",
 {255,240,245}, //"Lavanda avermelhada ",
 {200,162,200}, //"Lilas ",
 {191,255,0}, //"Lima ",
 {253,233,16}, //"Limao ",
 {250,240,230}, //"Linho ",
 {222,184,135}, //"Madeira ",
 {139,0,139}, //"Magenta escuro ",
 {224,176,255}, //"Malva ",
 {255,239,213}, //"Mamao batido ",
 {240,255,240}, //"Mana",
 {255,255,240}, //"Marfim ",
 {150,75,0}, //"Marrom ",
 {244,164,96}, //"Marrom amarelado ",
 {165,42,42}, //"Marrom claro ",
 {188,143,143}, //"Marrom rosado ",
 {139,69,19}, //"Marrom sela ",
 {251,236,93}, //"Milho ",
 {255,248,220}, //"Milho Claro ",
 {255,228,181}, //"Mocassim ",
 {255,219,88}, //"Mostarda ",
 {0,0,128}, //"Naval ",
 {255,250,250}, //"Neve ",
 {204,119,34}, //"Ocre ",
 {128,128,0}, //"Oliva ",
 {85,107,47}, //"Oliva escura ",
 {107,142,35}, //"Oliva parda ",
 {218,112,214}, //"Orquidea ",
 {153,50,204}, //"Orquidea escura ",
 {186,85,211}, //"Orquidea media ",
 {255,215,0}, //"Ouro ",
 {205,133,63}, //"Peru ",
 {192,192,192}, //"Prata ",
 {0,0,0}, //"Preto ",
 {255,218,185}, //"Pessego ",
 {128,0,128}, //"Purpura (roxo) ",
 {147,112,219}, //"Purpura media ",
 {253,245,230}, //"Renda antiga ",
 {255,192,203}, //"Rosa ",
 {255,0,127}, //"Rosa brilhante ",
 {252,15,192}, //"Rosa choque ",
 {255,182,193}, //"Rosa claro ",
 {255,228,225}, //"Rosa embacado ",
 {255,105,180}, //"Rosa forte ",
 {255,20,147}, //"Rosa profundo ",
 {153,51,153}, //"Roxo ",
 {109,53,26}, //"Rotilo ",
 {250,128,114}, //"Salmao ",
 {255,160,122}, //"Salmao claro ",
 {233,150,122}, //"Salmao escuro ",
 {255,250,205}, //"Seda ",
 {139,87,66}, //"Tan ",
 {226,114,91}, //"Terracota ",
 {178,34,34}, //"Tijolo refratario ",
 {255,99,71}, //"Tomate ",
 {245,222,179}, //"Trigo ",
 {64,224,208}, //"Turquesa ",
 {0,206,209}, //"Turquesa escura ",
 {72,209,204}, //"Turquesa media ",
 {175,238,238}, //"Turquesa palida ",
 {0,255,0}, //"Verde ",
 {154,205,50}, //"Verde amarelado ",
 {144,238,144}, //"Verde claro ",
 {0,100,0}, //"Verde escuro ",
 {34,139,34}, //"Verde floresta ",
 {50,205,50}, //"Verde lima ",
 {124,252,0}, //"Verde grama ",
 {32,178,170}, //"Verde mar claro ",
 {143,188,143}, //"Verde mar escuro ",
 {60,179,113}, //"Verde mar medio ",
 {120,134,107}, //"Verde militar ", 
 {127,255,0}, //"Verde Paris ",
 {0,255,127}, //"Verde primavera ",
 {0,250,154}, //"Verde primavera medio ",
 {152,251,152}, //"Verde palido ",
 {0,128,128}, //"Verde-azulado ",
 {255,0,0}, //"Vermelho ",
 {139,0,0}, //"Vermelho escuro ",
 {205,92,92}, //"Vermelho indiano ",
 {199,21,133}, //"Vermelho violeta medio ",
 {219,112,147}, //"Vermelho violeta palido ",
 {238,130,238}, //"Violeta ",
 {148,0,211}, //"Violeta escuro ",
};

void exibeCor (int qual){
  analogWrite(ledR, valoresRGB[qual][0]);
  analogWrite(ledG, valoresRGB[qual][1]);
  analogWrite(ledB, valoresRGB[qual][2]);
  delay(1000); //tempo igual para todas as coresé
}

void setup() {
  pinMode(ledR, OUTPUT);
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT); 
}

void loop() {
  for(int x = 0; x < 174; x++){
    exibeCor(x);
  }
}

//——

LED Tricolor (ou LED RGB) – Para uso com um LED que já possui internamente os três LEDs (vermelho, verde e azul) correspondentes às cores RGB, podemos fazer assim:

OU

Um dos terminais do LED Tricolor/RGB é comum aos três LEDs internos, e pode ser tanto ligado no cátodo (que vai ao GND, como mostrado nas figura) como pode ser ligado no ânodo (que vai ligado ao VCC/ 5V – isto inverte o controle, mas o funcionamento em síntese é o mesmo, combinação de cores).

Teste com o LED tricolor. O código é o mesmo!

Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420
Universidade Federal do Paraná
TI Aplicada – pesquisa e extensão

Av Pref Lothário Meissner, 632
80210-170 | Curitiba |
simao@ufpr.br
(41) 3360-4420

UFPR nas Redes Sociais


UFPR nas Redes Sociais