Led RGB anodo comum ou o Led RGB catodo comum? Como identificar e usar com Arduino (circuito e programação)

Como usar o led RGB (ânodo comum e cátodo comum) com Arduino

Objetivo

Nesta dica vamos mostrar como usar um led RGB em programação com Arduino. Vamos mostrar também como identificar e diferenciar um led RGB anodo comum de um led RGB catodo comum, evitando-se erros na hora de programar. É muito comum em programação em Arduino, erros de configuração do led RGB em função do seu tipo de fabricação: anodo comum ou catodo comum.

LED RGB: é um componente eletrônico formado por um conjunto de 3 LEDs encapsulados, cada um com uma cor distinta: o vermelho (Red), o verde (Green) e o azul (Blue), podendo cada led ser controlado individualmente. Leia também Led RGB - definições.

Existem basicamente 2 tipos de LED RGB o ânodo comum e o cátodo comum. Observe que para cada uma das cores existe um terminal, e além disso o quarto terminal (maior) deverá ser conectado ao polo positivo (ânodo comum) e ao polo negativo (cátodo comum).

Montagem do led RGB no circuito

Para montarmos o circuito precisamos levar em conta se o led RGB é anodo ou catodo comum. Também precisamos calcular os resistores para cada terminal.

Calculo dos resistores

Para determinar os valores dos resistores para o led RGB, devemos utilizar os dados do fabricante (datasheet). Abaixo, seguem os valores típicos padrão encontrados no mercado:

A partir destes dados podemos calcular o valor dos resistores (ou determinar através da tabela prática: Tabela prática de utilização d leds 3mm e 5m. Para calcular o valor dos resistores leia: Leds ligados em sério ou paralelo ou utilize o aplicativo: Calculador de Led.

Após os cálculos determinamos os seguintes resistores: 2 resistores de 100Ω (terminais cor verde e azul) e 1 resistor de 150Ω (terminal cor vermelho):

Obs: Caso não possua os dados do fabricante (datasheet), utilize como referência os valores dos resistores que mostramos acima, tanto para o LED alto brilho como para o LED difuso. Utilize sempre resistores com valores iguais ou superiores aos calculados.

Cátodo comum X Ânodo comum

Observe no circuito abaixo onde mostramos a montagem dos dois tipos de led RGB, ÂNODO COMUM e CÁTODO COMUM:

Testando o circuito - Identificando o tipo de Led RGB

1. Para testarmos o circuito e verificar se o LED RGB cátodo comum está corretamente montado, conecte o pino maior do componente no GND do Arduino e  utilize o código abaixo para testar:

Obs.: No Led RGB cátodo comum a cor é ativada com sinal digital de nível alto, ou seja HIGH (nível lógico 1).

/*******************************************************************************
*
*       Usando um LED RGB CATODO COMUM(TESTE)
*            http://squids.com.br/arduino
*
*******************************************************************************/
 
// define pinos de entrada e saída do Arduino 
const int R = 12;   // terminal Red (vermelho)
const int G = 11;  // terminal Green (verde)
const int B = 10;  // terminal Blue (azul)

void setup(){
// pin mode - definie entradas e saídas 
    pinMode(R, OUTPUT); 
    pinMode(G, OUTPUT); 
    pinMode(B, OUTPUT); 
}

void loop(){
    // VERMELHO PURO
    digitalWrite(R, HIGH);
    digitalWrite(G, LOW);
    digitalWrite(B, LOW);
    delay(1000);
    // VERDE PURO
    digitalWrite(R, LOW);
    digitalWrite(G, HIGH);
    digitalWrite(B, LOW);
    delay(1000);
    // AZUL PURO
    digitalWrite(R, LOW);
    digitalWrite(G, LOW);
    digitalWrite(B, HIGH);
    delay(1000);
}

1.1. A cada segundo (1000ms) aparecerá as cores Vermelho, Verde e Azul sucessivamente, nesta ordem. 

1.2. Se o LED RGB não acender, inverta a conexão do terminal maior (GND para 5V), pois possivelmente o led que você está utilizando é um LED RGB ânodo comum.

2. Para testarmos o circuito e verificar se o LED RGB ânodo comum está corretamente conectado conecte o pino maior do componente no Vcc (5V) do Arduino e utilize o código abaixo para testar:

Obs.: No Led RGB ânodo comum a cor é ativada com sinal digital de nível baixo, ou seja LOW (nível lógico 0).

/*******************************************************************************
*
*      Usando um LED RGB ANODO COMUM (TESTE)
*            http://squids.com.br/arduino
*
*******************************************************************************/

// define pinos de entrada e saída do Arduino 
const int R = 12;   // terminal Red (vermelho)
const int G = 11;  // terminal Green (verde)
const int B = 10;  // terminal Blue (azul)

void setup(){
// pin mode - definie entradas e saídas 
    pinMode(R, OUTPUT); 
    pinMode(G, OUTPUT); 
    pinMode(B, OUTPUT); 
}

void loop(){
    // VERMELHO PURO
    digitalWrite(R, LOW);
    digitalWrite(G, HIGH);
    digitalWrite(B, HIGH);
    delay(1000);
    // VERDE PURO
    digitalWrite(R, HIGH);
    digitalWrite(G, LOW);
    digitalWrite(B, HIGH);
    delay(1000);
    // AZUL PURO
    digitalWrite(R, HIGH);
    digitalWrite(G, HIGH);
    digitalWrite(B, LOW);
    delay(1000);
}

2.1. Observe que a cada segundo (1000ms) aparecerá as cores Vermelho, Verde e Azul sucessivamente, nesta ordem.

PWM - Pulse Width Modulation com led RGB

Como demonstrado nos projetos Projeto 14 - Led com efeito dimmer usando potenciômetro e Projeto 18 - Efeito lâmpada pulsante, o led RGB utiliza também o conceito PWM (Pulse Width Modulation, em português, modulação por largura de pulso) no controle da luminosidade (intensidade do brilho dos LEDs).

O Arduino UNO, que utilizamos no exemplo, possui 6 saídas digitais que podem ser utilizadas como PWM, sendo elas: 11, 10, 9, 6, 5 e 3.

Obs.: Está predefinido no Arduino que para ter 0% de PWM, basta escrever: analogWrite(pino a ser gravado, 0) do mesmo modo que, para obter 100% de PWM, basta escrever: analogWrite(pino a ser gravado, 255), ou seja, na estrutura que o Arduino entende como PWM, os valores que vão de 0 (mínimo, ou seja, 0%) até 255 (máximo, ou seja,100%).

Para saber mais sobre PWM, leia o tutorial: O que é PWM e para que serve?

Valores RGB (cores)

Um valor RGB (255, 0, 0) é vermelho puro, enquanto um valor (0, 255, 0) é verde puro e (0, 0, 255), azul puro. Misturando esses valores você pode obter todas as cores. Mesmo se estivesse simplesmente acendendo e apagando os LEDs, sem utilizar luminosidades diferentes, ainda se conseguiria cores diferentes como mostramos na figura abaixo.

Cores disponíveis acendendo e apagando os LEDs em combinações diferentes

Ao ajustar o brilho utilizando PWM, variando de 0 a 255, você também pode obter outras cores. Colocando o LED RPG através de um cilindro de papel, por exemplo, o espectro de luz das três cores primárias e suas intensidades criará uma única cor. O número total de cores disponíveis, utilizando PWM com um intervalo de 0 a 255, é de 16.777.216 cores (256 x 256 x 256).

LED RGB cátodo X LED RGB ânodo (definindo cores)

Como podemos observar nos testes anteriores, no Led RGB ânodo comum a cor é ativada com sinal digital de nível baixo, ou seja LOW (nível lógico 0) e no Led RGB cátodo comum a cor é ativada com sinal digital de nível alto, ou seja HIGH (nível lógico 0).

De forma similar, se utilizarmos valores analógicos na programação, a cor será 100% ativada no Led RGB ânodo comum com o valor 0 (zero) e 0% ativada com o valor de 255. Já no Led RGB cátodo comum a cor será 100% ativada no Led RGB cátodo comum com o valor 255 e 0% ativada com o valor de 0, com base nos valores PWM definidos por meio da função analogWrite().

Para entender melhor essa diferença entre os componentes, veja a tabela abaixo:

  LED RGB cátodo comum
LED RGB ânodo comum
conexão c/ Arduino GND Vcc 5V
cor ativa (digital) HIGH LOW
cor 100% ativa (analógico) analogWrite(Pino, 255) analogWrite(Pino, 0)
cor 0% ativa (analógico) analogWrite(Pino, 0) analogWrite(Pino, 255)

Portanto, quando utilizamos um Led RGB ânodo comum, devemos setar os seus valores para que represente a cor RGB corretamente, pois ela corresponde à um Led RGB cátodo comum.

Definindo cores pela da função analogWrite()

Como vimos acima, os valores analógicos RGB podem variar entre 0 e 255 quando utilizamos o recurso PWM. Sendo assim, podemos gerar as cominações de cores utilizando os valores padrão RGB usando um Led RGB. Entretanto, como os leds ânodo e cátodo são ativados de formas opostas, precisamos atentar na hora de setar os seus valores. Veja os exemplos de cores abaixo:

nome da cor cor RGB Led RGB cátodo comum
Led RGB ânodo comum
Vermelho puro (255, 0, 0) (255, 0, 0) (0, 255, 255)
Verde puro (0, 255, 0) (0, 255, 0) (255, 0, 255)
Azul puro (0, 0, 255) (0, 0, 255) (255, 255, 0)
Amarelo puro (255, 255, 0) (255, 255, 0) (0, 0, 255)
MidnightBlue (25, 25, 112) (25, 25, 112) (230, 230, 143)
Purple  (128, 0, 128)   (128, 0, 128)  (127, 255, 127)
 MediumSeaGreen  (60, 179, 113)  (60, 179, 113)   (195, 76, 142)

Como podemos observar na tabela acima, os valores das cores são ativados de formas opostas, ou seja:

. Quando Led RGB cátodo cumum = 255 => Led RGB ânodo comum = 255 - 255 = 0

. Quando Led RGB cátodo cumum = 0 => Led RGB ânodo comum = 255 - 0 = 255

. Quando Led RGB cátodo cumum = 25 => Led RGB ânodo comum = 255 - 25 = 230

. Quando Led RGB cátodo cumum = 112 => Led RGB ânodo comum = 255 - 112 = 143

Desta forma, podemos padronizar nosso programa, alterando somente o valor da variável booleana ledType. Para Led RGB cátodo comum ledType = 0 e para Led RGB ânodo comum ledType = 1.

// define se o led RGB é catodo comum(GND) = 0 ou anodo comum(Vcc) = 1
boolean ledType = 1; // ATENÇÃO: ledType = 0 (RGB cátodo comum) e ledType = 1 (RGB ânodo comum)

// exibe cor do led indicador (led rgb)
void setColor(int red, int green, int blue) {
  if (ledType == 1) {
    red = 255-red, green = 255-green, blue = 255-blue;
  } 
  // ativando led rgb nas cores definida pela distância
  analogWrite(R, red);
  analogWrite(G, green);
  analogWrite(B, blue);
}

Exemplo para usar Led RGB cátodo ou Led RGB ânodo

No exemplo abaixo, vamos fazer um led RGB mudar as cores da tabela anterior, a cada 2 segundos. Para isso, vamos usar o código padrão acima para que o programa funcione para os dois tipos de leds RGB, cátodo comum ou anodo comum, dependendo do valor da variável letType.

/*******************************************************************************
*
*    Teste cores usando Led RGB cátodo comum ou Led RGB ânodo comum
*    Autor: Angelo Luis Ferreira
*    25/11/2022
*    http://squids.com.br/arduino
*
*******************************************************************************/
// define se o led RGB é catodo comum(GND) = 0 ou anodo comum(Vcc) = 1
boolean ledType = 0; // ATENÇÃO: se o led for catodo comum, mude para 0

// define pinos de entrada e saída do Arduino
const int R = 12, G = 11, B = 10;  // pinos digitais usados para o led RGB

// define variáveis globais
byte Rval[] = {255,0,0,255,25,128,60};
byte Gval[] = {0,255,0,255,25,0,179};
byte Bval[] = {0,0,255,0,112,128,113};

void setup(){
  // pin mode - definie entradas e saídas digitais
  pinMode(R, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(B, OUTPUT);
}

void loop() {
   for (byte i=0;i<7;i++) {
      setColor(Rval[i],Gval[i],Bval[i]);
     delay(1000);
   }
}

// exibe cor do led indicador (led rgb)
void setColor(int red, int green, int blue) {
  if (ledType == 1) {
    red = 255-red, green = 255-green, blue = 255-blue;
  } 
  // ativando led rgb nas cores definida pela distância
  analogWrite(R, red);
  analogWrite(G, green);
  analogWrite(B, blue);
}

A seguir, veja a simulação do sketch acima usando um led RGB cátodo comum:

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores