You are on page 1of 4

RGB Led (Anodo Comum Common Anode) com potenciometro

Posted on November 24, 2012 by oleomachado Posted in Arduino, Componentes, LEDs Tagged arduino, LEDs Leave a comment

O Led RGB que usei neste exemplo um Anodo Comum de 5mm. Adquiri na Tayda Electronics por US$ 0.24

A pinagem deste LED conforme a figura abaixo. Veja que o pino maior o anodo comum. Use-o para se guiar.

(imagens obtidas tech-fruits e Tayda) A ligao bem simples. necessrio usar um resistor para cada pino de cor (catodos). Neste exemplo usei resistores de 330 ohms.

A cor de cada catodo varia de 0 a 255 e o potenciometro utilizado para ir alterando estes valores. O cdigo abaixo varia as cores conforme o pontenciometro girado.

1
/*-----------------------------------------------Cdigo original de Dave a.k.a Ka0ticstyle Original code from Dave a.k.a Ka0ticstyle ------------------------------------------------*/ int pinPotenciometer = 2; int pinRed = 3; int pinBlue = 5; int pinGreen = 6; float h; int h_int; int r = 0, g = 0, b = 0; int val = 0;

// Hue range // Hue color // Default RGB values // Set POT value to default 0 Hue to RGB

// Instantiate h2rgb and it's variables a.k.a void h2rgb(float h, int& R, int& G, int& B); void setup() { Serial.begin(9600); } void loop() { val = analogRead(pinPotenciometer); h = ((float)val) / 1024; h_int = (int) 360*h; h2rgb(h,r,g,b);

// Read the pin and display the value // Get the range. pot value / 1024 // Get the color hue by multiplying by 360

// Call the h2rgb function passing it the h

Serial.print("POT value: "); Serial.print(val); // Pot value

Serial.print(" = Hue of "); Serial.print(h_int); // Color Hue value Serial.print(" degrees. RGB values: "); Serial.print(r); // Red value Serial.print(" "); Serial.print(g); // Green value Serial.print(" "); Serial.println(b); // Blue value analogWrite(pinRed, r); analogWrite(pinGreen, g); analogWrite(pinBlue, b); } void h2rgb(float h, int& R, int& G, int& B) { // Used HSV --> RGB function // HSV - Hue, Saturation, Value // RGB - Red, Green, Blue - example (255,255,255) // Function below does a bunch of math to convert HSV values to RGB int var_i; float S=1, V=1, var_1, var_2, var_3, var_h, var_r, var_g, var_b; if ( S == 0 ) //HSV values = 0 1 { R = V * 255; G = V * 255; B = V * 255; } else { var_h = h * 6; if ( var_h == 6 ) var_h = 0; //H must be < 1 var_i = int( var_h ) ; //Or ... var_i = floor( var_h ) var_1 = V * ( 1 - S ); var_2 = V * ( 1 - S * ( var_h - var_i ) ); var_3 = V * ( 1 - S * ( 1 - ( var_h - var_i ) ) ); if ( var_i == 0 ) { var_r = V ; var_g = var_3 ; var_b = var_1 ; ( = = = ( = = = ( = = = var_i var_2 V var_1 var_i var_1 V var_3 var_i var_1 var_2 V == 1 ) { ; ; ; == 2 ) { ; ; ; == 3 ) { ; ; ; // Changes red led // Changes green led // Changes blue led

} else if var_r var_g var_b } else if var_r var_g var_b } else if var_r var_g var_b } else if var_r

( var_i == 4 ) { = var_3 ;

var_g = var_1 ; var_b = V ; } else var_r = V ; var_g = var_1 ; var_b = var_2 ; } R = (1-var_r) * 255; G = (1-var_g) * 255; B = (1-var_b) * 255; } }
About these ads

//RGB results = 0 255

You might also like