Skip to content

Instantly share code, notes, and snippets.

@BaReinhard
Created December 17, 2019 04:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BaReinhard/8e6627c5341b4b11c3ca5ae5e4730968 to your computer and use it in GitHub Desktop.
Save BaReinhard/8e6627c5341b4b11c3ca5ae5e4730968 to your computer and use it in GitHub Desktop.
//Program: RGB Color Change
//Programmer: Brett Reinhard
//Date: 03/12/2016
//Description: Changes color of rgb led by use of a potentiator knob.
int prevR = 0, prevG = 0, prevB = 0; // all of the previous RGB values
int const Red = 3; //pin 3
int const Blue = 5; // pin 4
int const Green = 6; // pin 5
int potpin = 0; // pin 0
int val ; // dimesions val as integre
int _red[125];
int _green[125];
int _blue[125];
int intarray;
int r = 0;
int g = 0;
int b = 0;
int inttotalarray;
int counter;
void RGB(int R, int G, int B) {
for (int i = 0; i <= 255; i++)
{
if (i >= prevR - R && prevR < R) {
analogWrite(Red, prevR + i);
}
if (i >= prevG - G && prevG < G) {
analogWrite(Green, prevG + i);
}
if (i >= prevB - B && prevB < B) {
analogWrite(Blue, prevB + i);
}
//delay(10);
//}
//for (int i = 0; i ><= 255; i++)
//{
if (i >= R - prevR && prevR > R) {
analogWrite(Red, prevR - i);
}
if (i >= G - prevG && prevG > G) {
analogWrite(Green, prevG - i);
}
if (i >= B - prevB && prevB > B) {
analogWrite(Blue, prevB - i);
}
delay(10);
}
delay(10);
//analogWrite(Red, R);
//analogWrite(Green, G);
//analogWrite(Blue, B);
prevR = R;
prevG = G;
prevB = B;
}
void setup() {
//RGB(255,255,255);
intarray = 0;
b = 0;
r = 255;
for (g = 0; g <= 256; g = g + 32) {
if (g != 256) {
_red[intarray] = r;
_green[intarray] = g;
_blue[intarray] = b;
intarray = intarray + 1;
}
else {
_red[intarray] = r;
_green[intarray] = g - 1;
_blue[intarray] = b;
intarray = intarray + 1;
}
}
//FIRST LINE OF RGB COLORS------------------
_red[intarray] = 255;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 224;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray++;
_red[intarray] = 192;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 160;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 128;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 96;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 64;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 32;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 255;
_blue[intarray] = 0;
intarray = intarray + 1;
// EASY WAY OF REVERSE RGB VALUES FOR RED, THIS IS THE SECOND LINE OF RGB COLORS-------
g = 255;
r = 0;
for (b = 0; b <= 256; b = b + 32) {
if (b != 256) {
_red[intarray] = r;
_green[intarray] = g - 1;
_blue[intarray] = b;
intarray = intarray + 1;
}
else {
_red[intarray] = r;
_green[intarray] = g - 1;
_blue[intarray] = b;
intarray = intarray + 1;
}
}// LINE 3 FROM RGB ----------------------------
_red[intarray] = 0;
_green[intarray] = 255;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 224;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 192;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 160;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 128;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 96;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 64;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 32;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 0;
_green[intarray] = 0;
_blue[intarray] = 255;
intarray = intarray + 1;
// END OF LINE 4 OF RGB VALUES --------------------------------
g = 0;
b = 255;
for (r = 0; r <= 256; r = r + 32) {
if (r != 256) {
_red[intarray] = r;
_green[intarray] = g - 1;
_blue[intarray] = b;
intarray = intarray + 1;
}
else {
_red[intarray] = r;
_green[intarray] = g - 1;
_blue[intarray] = b;
intarray = intarray + 1;
}
}// END OF LINE 5 OF RGB VALUES
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 255;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 224;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 192;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 160;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 128;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 96;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 64;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 32;
intarray = intarray + 1;
_red[intarray] = 255;
_green[intarray] = 0;
_blue[intarray] = 0;
intarray = intarray + 1;
inttotalarray = intarray - 1;
_red[0] = 255;
_green[0] = 0;
_blue[0] = 0;
_red[inttotalarray] = 255;
_green[inttotalarray] = 255;
_blue[inttotalarray] = 255;
//RGB(_red[inttotalarray], _green[inttotalarray], _blue[inttotalarray]);// for loop to dimension arrays for R, G, B values
} // sets up the program
void loop() { //main loop of the program
//val = analogRead(potpin);
val = map(val, 0, 1023, 0, inttotalarray);
for (counter = 0; counter <= inttotalarray; counter = counter + 1) {
//analogWrite(Red,_red[counter] );
//analogWrite(Green,_green[counter] );
// analogWrite(Blue,_blue[counter] );
RGB(_red[counter], _green[counter], _blue[counter]);
delay(1000);
RGB((_red[counter + 1] - _red[counter]) / 2 + _red[counter], (_green[counter + 1] - _green[counter]) / 2 + _green[counter], (_blue[counter + 1] - _blue[counter]) / 2 + _blue[counter]);
//analogWrite(Red,(_red[counter+1]-_red[counter])/2+_red[counter]);
//analogWrite(Green, (_green[counter+1]-_green[counter])/2+_green[counter]);
//analogWrite(Blue, (_blue[counter+1]-_blue[counter])/2+_blue[counter]);
delay(1000);
}
// RGB(_red[val], _green[val], _blue[val]);
//RGB(255,255,255); Testing Purposes Only
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment