sábado, 2 de junho de 2018

LED RGB

LED RGB com Arduino

fonte:https://www.environmentallights.com 

O LED RGB proporciona um acionamento onde pode-se conseguir por meio das diferentes tensões de alimentação, trabalhar com as cores primarias, vermelha, verde e azul.
Com a plataforma Arduino é possível além de conseguir as cores primarias, variar a intensidade de cada uma para conseguir tonalidades variantes para a aquisição de outras cores.
Nesse tutorial vamos realizar uma demonstração com projetos onde é possível adquirir o controle das cores desse componente de forma que venha a atender uma necessidade conforme o usuário desejar.

Vamos conhecer um pouco das características desse componente. O LED RGB possui características físicas que devem ser consideradas. Cada terminal possui um tamanho, onde o terminal mais longo pode atender a característica comum para seu funcionamento (o usuário adquire conforme sua necessidade, anodo comum ou catodo comum).

Características do componente

Projeto 1: Variando as cores com o Arduino

Para esse primeiro projeto, o usuário deve ter em mãos:

Placa microcontrolada Arduino (UNO ou similar)
Resistores 330Ω
LED RGB (catodo comum)
Cabos jumpers
Protoboard

Circuito 1:



fonte: próprio autor

Código 1:

/*
 * CORES DO LED RGB
 */
int redpin=9; //Pin 9
int greenpin=10; //Pin 10
int bluepin=11; //Pin 11
int var=0;
int var1=0;
void setup(){ 
  }
void loop(){
for(var=250;var<255;var++){
  analogWrite(redpin,var); //RED
  analogWrite(greenpin,0);
  delay(500);
  analogWrite(redpin,0); //GREEN
  analogWrite(greenpin,var);
  delay(500);
  analogWrite(greenpin,0); //BLUE
  analogWrite(bluepin,var);
  delay(500);
  analogWrite(bluepin,0);
  delay(500);
}
for(var1=250;var1<255;var1++){
  analogWrite(redpin,var1); //YELLOW
  analogWrite(greenpin,var1);
  delay(500);
  analogWrite(redpin,0);
  delay(500);
  analogWrite(greenpin,var1); //CYAN
  analogWrite(bluepin,var1);
  delay(500);
  analogWrite(greenpin,0);
  delay(500);
  analogWrite(bluepin,var1); //MAGENTA
  analogWrite(redpin,var1);
  delay(500);
  analogWrite(bluepin,0);
  delay(500);
  analogWrite(bluepin,var1);
  analogWrite(redpin,var1);
  analogWrite(greenpin,var1);
  }
}


 Projeto 2: Variando as cores do LED RGB com potenciômetro


Componentes:

Placa microcontrolada Arduino (UNO ou similar)
Resistores 330Ω
Resistores 10 KΩ
Botões de pressão
Potenciômetro 10 KΩ
LED RGB (catodo comum)
Cabos jumpers
Protoboard

Circuito 2:



fonte: próprio autor

Código 2:

/*
 * VARIANDO CORES DO LED RGB COM O POTENCIÔMETRO
 */
// Define as conexões para cada cor do RGB
const int R = 11;
const int G = 9;
const int B = 10;
 
// Armazena os valores para cada cor entre (0-255)
int ValorR = 255;
int ValorG;
int ValorB;
 
// Define as conexões dos botões seletores
const int botR = 2;
const int botG = 4;
const int botB = 7;
 
// Define a conexão do potenciômetro
const int pot = A1;
 
void setup()
{
// Define Monitor Serial (visualização de dados)
  Serial.begin(9600); // taxa de comunicação entre Arduino e PC
   
// Indica que os pinos dos botões são de SAÍDA do Arduino
    pinMode(R, OUTPUT);
    pinMode(G, OUTPUT);
    pinMode(B, OUTPUT);
 
// Indica que os pinos são ENTRADA do Arduino
    pinMode(botR, INPUT);
    pinMode(botG, INPUT);
    pinMode(botB, INPUT);
    pinMode(pot, INPUT);
}
 
void loop()
{
   //Verifica se os botões seletores estão acionados    
   while (digitalRead(botR) == HIGH) // enquanto o botão R estiver acionado
   {
      ValorR = map(analogRead(pot),0,1023,0,255);
      analogWrite(R,ValorR);
      analogWrite(G,0);
      analogWrite(B,0);
      // Chama a função para mostrar na tela
      monitorSerial();
 
   }
    while (digitalRead(botG) == HIGH) // enquanto o botão G estiver acionado
   {
      ValorG = map(analogRead(pot),0,1023,0,255);
      analogWrite(R,0);
      analogWrite(G,ValorG);
      analogWrite(B,0);
      // Chama a função para mostrar na tela
      monitorSerial();       
   }
    while (digitalRead(botB) == HIGH)// enquanto o botão G estiver acionado
    {
      ValorB = map(analogRead(pot),0,1023,0,255);
      analogWrite(R,0);
      analogWrite(G,0);
      analogWrite(B,ValorB);
      // Chama a função para mostrar na tela
      monitorSerial();
    }
     
    // Atualiza o led RGB com a cor da mistura
        analogWrite(R, ValorR);
        analogWrite(G, ValorG);
        analogWrite(B, ValorB);
 }
 
void monitorSerial()
{
//mostra os valores no PC - Monitor Serial valor do potenciômetro
     Serial.print("R = ");
     Serial.print(ValorR);
     Serial.print(" | G= ");
     Serial.print(ValorG);
     Serial.print(" | B= ");
     Serial.println(ValorB);
     delay(50);
}


 Projeto 3: Variando as cores do LED RGB com Bluetooth

Deixando o projeto um pouco mais interessante, no próximo código, vamos fazer um acionamento remoto das cores do LED RGB, por meio de um aplicativo do celular. Para que isso possa ocorrer, é necessário instalar o aplicativo "RGB Led Control", que pode ser encontrado por esse LINK da Playstore.



fonte: Google play


Componentes:



Placa microcontrolada Arduino (UNO ou similar)
Módulo Bluetooth HC-05 ou HC-06

LED RGB (catodo comum)

Cabos jumpers
Protoboard


Circuito 3:


fonte: próprio autor

Código 3:

//Baseado no original de vandenbrande
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial mySerial(10,11); //Definição do pino11 e pino12 como RX e TX 

int PIN_RED = 3;
int PIN_GREEN = 5;
int PIN_BLUE = 6;

String RGB = ""; 
String RGB_Previous = "255.255.255"; 
String ON = "ON"; 
String OFF = "OFF"; 
boolean RGB_Completed = false;
 
void setup() {
  pinMode (PIN_RED, OUTPUT);
  pinMode (PIN_GREEN, OUTPUT);
  pinMode (PIN_BLUE, OUTPUT);
  Serial.begin(9600); 
  mySerial.begin(9600);
  RGB.reserve(30);
}
 
void loop() {

  while(mySerial.available()){
    char ReadChar = (char)mySerial.read();
 
    if(ReadChar == ')'){
      RGB_Completed = true;
    }else{
       RGB += ReadChar;
    }
  }
  
  if(RGB_Completed){
 
      Serial.print("RGB:");
      Serial.print(RGB);
      Serial.print("     PreRGB:");
      Serial.println(RGB_Previous);
      
      if(RGB==ON){
          RGB = RGB_Previous; 
          Light_RGB_LED();
      }else if(RGB==OFF){
          RGB = "0.0.0"; 
          Light_RGB_LED();
      }else{
          Light_RGB_LED();   
          RGB_Previous = RGB;     
      }
      RGB = "";
      RGB_Completed = false;      
  } 
} 
 
void Light_RGB_LED(){
 
  int SP1 = RGB.indexOf(' ');
  int SP2 = RGB.indexOf(' ', SP1+1);
  int SP3 = RGB.indexOf(' ', SP2+1);
  String R = RGB.substring(0, SP1);
  String G = RGB.substring(SP1+1, SP2);
  String B = RGB.substring(SP2+1, SP3);

  Serial.print("R=");
  Serial.println( constrain(R.toInt(),0,255));
  Serial.print("G=");
  Serial.println(constrain(G.toInt(),0,255));
  Serial.print("B=");
  Serial.println( constrain(B.toInt(),0,255));
 
  analogWrite(PIN_RED,  (R.toInt()));
  analogWrite(PIN_GREEN, (G.toInt()));
  analogWrite(PIN_BLUE,  (B.toInt()));
 
}


No vídeo abaixo é possível ver o funcionamento dos três projetos sendo executado.
Bom estudo à todos!


Nenhum comentário:

Postar um comentário