Depois de muuuito tempo inativo aqui no blog, volto para tentar tirar a poeira com uma nova área para mim e para muitos amigos “computeiros”: a eletrônica. Mais especificamente, o Arduino.

Nos últimos meses estive consideravelmente ocupado (e preguiçoso) para voltar a escrever, principalmente devido ao padrão de post gigantes que habitam esse blog. Por isso, dessa vez, tentarei fazer algo mais resumido e, conseqüentemente, voltado a quem já possui o mínimo de conhecimento sobre o assunto.

Vou me ater a apresentar o protótipo que fiz, a esquemática e código fonte sem entrar em maiores explicações de funcionamento.

Bem, o Colorino, como foi nomeado pelo meu caro amigo @jopss, é um experimento que fiz com o Arduino para aprender sobre e testar um led RGB que comprei do Deal Extreme usando resistores variáveis, transistores e uma programação bastante simples. O objetivo era controlar a intensidade de cada cor do led (vermelho, verde e azul) através dos resistores deslizantes. Através do uso de transistores, pude controlar a intensidade da corrente através do sinal digital do Arduino.

Primeiramente vamos ao componentes usados:

  • 1 Arduino Duemilanove ATMega328 (“Brasileirino”) [Arduino Uno];
  • 1 Led RGB 5W 70 Lumen [Deal Extreme];
  • 3 Potenciômetros deslizantes 20 kΩ [Google Images] [Wiki US];
  • 3 Transistores NPN Tip122 [Wiki];
  • 1 Bateria 4V de alta descarga (pode ser uma bateria de 3,7V de celular)*;
  • 1 Bateria 9V convencional para alimentar o Arduino (opcional) [Google Images];
  • Muitos fios.

* No caso da bateria de alta descarga, usei uma de 4V (de lítio) de um fone de ouvido bluetooth que eu tinha. Uma bateria de celular pode ser usada se retirado o limitador de descarga (fusível). Considerando uma fonte de 5V, o Led de 5W consumiria 1A (ampér), o que é bastante. Na prática, cheguei ao máximo de 0,5A.

Agora vamos à esquemática dos componentes.

colorino_esquema

Espero ter feito um bom trabalho ao desenhar esse esquema com o Fritzing.

Hora do código fonte feito na IDE do Arduino.

//Define as portas analógicas de entrada dos potenciômetros
const int pot_r = 2;
const int pot_g = 1;
const int pot_b = 0;
 
//Define as portas PWM de saída analógica para os transistores
const int led_r = 3;
const int led_g = 5;
const int led_b = 6;
 
//Flag para ativar o debug pelo monitor da porta serial
const boolean debug = true;
 
void setup() {
  pinMode(led_r, OUTPUT);
  pinMode(led_g, OUTPUT);
  pinMode(led_b, OUTPUT);
 
  if(debug) { Serial.begin(9600); }
}
 
void loop() {
  //Obtem a leitura dos potenciômetros nas portas analógicas
  int pot_r_signal = analogRead(pot_r);
  int pot_g_signal = analogRead(pot_g);
  int pot_b_signal = analogRead(pot_b);
 
  //Converte os sinais dos potenciômetros para a escala de escrita das PWM
  //O led vermelho recebe menos energia por ser naturalmente mais forte
  int pot_r_digital = map(pot_r_signal, 0, 1023, 0, 150);
  int pot_g_digital = map(pot_g_signal, 0, 1023, 0, 255);
  int pot_b_digital = map(pot_b_signal, 0, 1023, 0, 255);
 
  //Escreve o sinal convertido para os transistores que deverão liberar
  //a quantia equivalente de corrente ao led
  analogWrite(led_r, pot_r_digital);
  analogWrite(led_g, pot_g_digital);
  analogWrite(led_b, pot_b_digital);
 
  if(debug) {
    Serial.print("RED: ");
    Serial.print(pot_r_signal);
    Serial.print(" => ");
    Serial.println(pot_r_digital);
 
    Serial.print("GREEN: ");
    Serial.print(pot_g_signal);
    Serial.print(" => ");
    Serial.println(pot_g_digital);
 
    Serial.print("BLUE: ");
    Serial.print(pot_b_signal);
    Serial.print(" => ");
    Serial.println(pot_b_digital);
 
    delay(1000);
  }
}

Finalmente o resultado.

Por hora é só. Espero voltar logo com outro pequeno projeto de Arduino voltado a estudo de componentes. Fui!

Share