Puede cambiar las tonalidades de un led RGB por medio de un potenciómetro, para este necesita, 3 resistencias de 220 omnios, un led RGB, potenciómetro, jumpers, Arduino y protoboard

//Definición global de los pines correspondientes al RGB R=Rojo en pin 8, G=Verde en
pin 12 y B=Azul en pin 10
//Asi como la lectura del potenciometro desde el pin A0
#define RGB_RED_PIN 8
#define RGB_BLUE_PIN 12
#define RGB_GREEN_PIN 10
#define POTENTIOMETER_PIN A0
//Se crea una función que enviara la escala para el RGB
void digitalWriteRGB(byte red, byte blue, byte green)
{
digitalWrite(RGB_RED_PIN, red);
digitalWrite(RGB_BLUE_PIN, blue);
digitalWrite(RGB_GREEN_PIN, green);
}
void setup()
{
//Salida para cada parte del RGB
pinMode(RGB_RED_PIN, OUTPUT);
pinMode(RGB_BLUE_PIN, OUTPUT);
pinMode(RGB_GREEN_PIN, OUTPUT);
//Inicializamos la comunicación serial
Serial.begin(9600);
}
void loop()
{
//Obtenemos el valor del potenciometro
int potentiometerValue = analogRead(POTENTIOMETER_PIN);
//Tomaremos el valor de un potenciómetro directo de la lectura analógica y lo
convertiremos al valor de voltaje que representa
//Usando la función de escalamiento map obtendremos 8 posibles valores de 0 a 7
int mode = map(potentiometerValue, 0, 1023, 0, 6);
//Entramos a la clausula switch con el valor calculado en mode de 0 a 7 donde 7 sera
el valor por defecto
//En cada uno de los posibles 7 casos se hace el llamado a la función digitalWriteRGB
mencionada al principio
//Esta función se encargara de enviar los valores al modulo RGB Led y veremos el
cambio de color automaticamente
switch (mode) {
case 0:
digitalWriteRGB(HIGH, LOW, LOW);
break;
case 1:
digitalWriteRGB(LOW, HIGH, LOW);
break;
case 2:
digitalWriteRGB(LOW, LOW, HIGH);
break;
case 3:
digitalWriteRGB(HIGH, HIGH, LOW);
break;
case 4:
digitalWriteRGB(HIGH, LOW, HIGH);
break;
case 5:
digitalWriteRGB(LOW, HIGH, HIGH);
break;
case 6:
digitalWriteRGB(HIGH, HIGH, HIGH);
break;
default:
digitalWriteRGB(LOW, LOW, LOW);
break;
}
}