Una matriz como la que uso IgnoranteAbsoluto permite manipular todas tus opciones de manera simple y rápida.
// El problema de usar un array es que consume RAM. Otra solución es usar PROGMEM: https://www.arduino.cc/en/Reference/PROGMEM
const byte ARRAY_VALORES[][NUMERO_CAMPOS] = {
// R G B paso (se puede lograr más o menos velocidad cambiando el paso) (paso == 0 no cambia nunca el LED)
{'A', 0, 0, 255, 0}, // Azul fijo
{'B', 0, 255, 0, 0}, // Verde fijo
{'C', 255, 0, 0, 0}, // Rojo fijo
{'D', 255, 255, 0, 0}, // Amarillo fijo
{'E', 255, 0, 255, 0}, // Rosa fijo
{'F', 0, 255, 255, 0}, // Celeste fijo
{'G', 0, 0, 255, 5}, // Azul tenue
{'H', 0, 255, 0, 5}, // Verde tenue
{'I', 255, 0, 0, 5}, // Rojo tenue
{'J', 255, 255, 0, 5}, // Amarillo tenue
{'K', 255, 0, 255, 5}, // Rosa tenue
{'L', 0, 255, 255, 5}, // Celeste tenue
{'V', 255, 255, 255, 0}, // Blanco fijo
{'W', 255, 255, 255, 5}, // Blanco tenue
{'X', 140, 255, 55, 0}, // fijo
{'Y', 140, 255, 55, 3}, // tenue
{'Z', 0, 0, 0, 0} // Apagado
};
Primero si miras, con detenimiento, la matriz repite ordenadamente cada una de tus opciones, mas algunas que agregó justamente para darte mas opciones.
Tienes una matriz de bytes, con muchas filas y solo 5 columnas.
Las columnas tienen un primer valor que es tu comando anterior. El que ingresabas por Serial.
Luego los valores RGB y por ultimo un valor de paso usado para el incremento/decremento.
La variable que contiene todo la llamó ARRAY_VALORES[fila][columna]
si pones diferentes valores en fila y columna, recuperas los datos almacenados en cada uno de las posiciones de la matriz.
De ese modo
ARRAY_VALORES[0][0] devuelve 'A'
ARRAY_VALORES[0][1] devuelve 0
ARRAY_VALORES[0][2] devuelve 0
ARRAY_VALORES[0][3] devuelve 255
ARRAY_VALORES[0][4] devuelve 0
Dime si ahora se ve mejor esto?