[Arduino] Controlando um LED RGB com potenciômetros

02/11/12  |  Comentário (0)  |  Arduino

Pesquisando como controlar as cores de um LED RGB através de potenciômetros usando uma Arduino, achei uma serie de tutoriais, mas a maioria faltava alguma informação. Logo reuni as informações aqui.

Circuito protoboard real da Arduino controlando um LED RGB com potenciômetros

Objetivo

Controlar individualmente cada cor de um LED RGB por potenciômetros.

Materiais necessários

  • Arduino
  • Protoboard
  • LED RGB
  • Potenciômetro
  • Resistor 300 ohm
  • Fios

Circuito

  • Protoboard
  • Esquemático

O pino negativo do LED é ligado na entrada GND e os outros 3 pinos RGB nas entradas digitais 9, 10 e 11, respectivamente. Colocando um resistor 300 Ohm entre os pinos do LED e a Arduino.

Nos potenciômetros o primeiro pino é ligado na entrada GND, o terceiro é o pino é ligado na entrada +5V, e o segundo pino deve se ligar nas entradas analógicas 0, 1 e 2. 0 para a cor vermelha, 1 para a cor verde e 2 para cor azul.

Código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Declarando as variáveis do pinos do LED RGB
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
 
//Declarando as variáveis do pinos dos potenciômetros
const int redPotPin = 0;
const int greenPotPin = 1;
const int bluePotPin = 2;
 
// Init das nossas variáveis
int currentColorValueRed;
int currentColorValueGreen;
int currentColorValueBlue;
 
void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}
 
void loop() {
//Pega a tensão em cada pino analógico, reduzir para o intervalo de 0 até 255 e inverte o valor do pólo negativo
  currentColorValueRed = (255 - map( analogRead(redPotPin), 0, 1024, 0, 255 ) );
  currentColorValueBlue = (255 - map( analogRead(bluePotPin), 0, 1024, 0, 255 ) );
  currentColorValueGreen = (255 - map( analogRead(greenPotPin), 0, 1024, 0, 255 ) );
 
//Envia a cor para cada pino do LED
  analogWrite(redPin, currentColorValueRed);
  analogWrite(bluePin, currentColorValueBlue);
  analogWrite(greenPin, currentColorValueGreen);
}
//Declarando as variáveis do pinos do LED RGB
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;

//Declarando as variáveis do pinos dos potenciômetros
const int redPotPin = 0;
const int greenPotPin = 1;
const int bluePotPin = 2;

// Init das nossas variáveis
int currentColorValueRed;
int currentColorValueGreen;
int currentColorValueBlue;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
//Pega a tensão em cada pino analógico, reduzir para o intervalo de 0 até 255 e inverte o valor do pólo negativo
  currentColorValueRed = (255 - map( analogRead(redPotPin), 0, 1024, 0, 255 ) );
  currentColorValueBlue = (255 - map( analogRead(bluePotPin), 0, 1024, 0, 255 ) );
  currentColorValueGreen = (255 - map( analogRead(greenPotPin), 0, 1024, 0, 255 ) );

//Envia a cor para cada pino do LED
  analogWrite(redPin, currentColorValueRed);
  analogWrite(bluePin, currentColorValueBlue);
  analogWrite(greenPin, currentColorValueGreen);
}

Código retirado de RGB LED Color Chooser em Arduino playground.

Demo

X
Balloons theme by
Moargh.de