increment in hue values of RGB
hi all, i'm new programming , i'm starting experiment arduino.
i working on project of using arduino control hues of rgb leds. i've got red on pin11, green on pin10 , blue on pin9. what want achieve use push button increase hue value of leds.
i've found set of codes on web uses potentiometer (see below). was trying change input digital using pushbutton. but i'm not sure how it. thanks in advance!
int potpin = 5; // potentiometer connected analog pin 5
int rpin = 11;
int gpin = 10;
int bpin = 9;
float h;
int h_int;
int r=0, g=0, b=0;
int val=0;
void h2rgb(float h, int &r, int &g, int &b);
void setup() // run once, when sketch starts
{
serial.begin(9600); // set serial library @ 9600 bps
}
void loop() // run on , on again
{
val=analogread(potpin); // read pin , display value
//serial.println(val);
h = ((float)val)/1024;
h_int = (int) 360*h;
h2rgb(h,r,g,b);
serial.print("potentiometer value: ");
serial.print(val);
serial.print(" = hue of ");
serial.print(h_int);
serial.print("degrees. in rgb is: ");
serial.print(r);
serial.print(" ");
serial.print(g);
serial.print(" ");
serial.println(b);
analogwrite(rpin, r);
analogwrite(gpin, g);
analogwrite(bpin, b);
}
void h2rgb(float h, int& r, int& g, int& b) {
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 < 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 ;
}
else if ( var_i == 1 ) {
var_r = var_2 ;
var_g = v ;
var_b = var_1 ;
}
else if ( var_i == 2 ) {
var_r = var_1 ;
var_g = v ;
var_b = var_3 ;
}
else if ( var_i == 3 ) {
var_r = var_1 ;
var_g = var_2 ;
var_b = v ;
}
else if ( var_i == 4 ) {
var_r = 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; //rgb results = 0 ÷ 255
g = (1-var_g) * 255;
b = (1-var_b) * 255;
}
}
i working on project of using arduino control hues of rgb leds. i've got red on pin11, green on pin10 , blue on pin9. what want achieve use push button increase hue value of leds.
i've found set of codes on web uses potentiometer (see below). was trying change input digital using pushbutton. but i'm not sure how it. thanks in advance!

int potpin = 5; // potentiometer connected analog pin 5
int rpin = 11;
int gpin = 10;
int bpin = 9;
float h;
int h_int;
int r=0, g=0, b=0;
int val=0;
void h2rgb(float h, int &r, int &g, int &b);
void setup() // run once, when sketch starts
{
serial.begin(9600); // set serial library @ 9600 bps
}
void loop() // run on , on again
{
val=analogread(potpin); // read pin , display value
//serial.println(val);
h = ((float)val)/1024;
h_int = (int) 360*h;
h2rgb(h,r,g,b);
serial.print("potentiometer value: ");
serial.print(val);
serial.print(" = hue of ");
serial.print(h_int);
serial.print("degrees. in rgb is: ");
serial.print(r);
serial.print(" ");
serial.print(g);
serial.print(" ");
serial.println(b);
analogwrite(rpin, r);
analogwrite(gpin, g);
analogwrite(bpin, b);
}
void h2rgb(float h, int& r, int& g, int& b) {
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 < 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 ;
}
else if ( var_i == 1 ) {
var_r = var_2 ;
var_g = v ;
var_b = var_1 ;
}
else if ( var_i == 2 ) {
var_r = var_1 ;
var_g = v ;
var_b = var_3 ;
}
else if ( var_i == 3 ) {
var_r = var_1 ;
var_g = var_2 ;
var_b = v ;
}
else if ( var_i == 4 ) {
var_r = 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; //rgb results = 0 ÷ 255
g = (1-var_g) * 255;
b = (1-var_b) * 255;
}
}
Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > increment in hue values of RGB
arduino
Comments
Post a Comment