c ++ ¿Se desvanece entre los colores? (Arduino)

Actualmente tengo esto que se desvanece entre 2 colores establecidos:

for(int i=0;i<nLEDs;i++){
    a = (255 / 100) * (incomingByte * sensitivity);
    r = (r * 7 + a + 7) / 8;
    g = (g * 7 + (255 - a) + 7) / 8;
    b = 0;

    FTLEDColour col = { r , g , b };
    led.setLED(i, col);
  }

Pero ahora estoy tratando de permitir a los usuarios ingresar sus propios colores:

// > Colour fade, Start colour

int colFade1Red = 0;
int colFade1Green = 255;
int colFade1Blue = 0;

// > Colour fade, End colour

int colFade2Red = 255;
int colFade2Green = 0;
int colFade2Blue = 0;

int fadeAm = 7; // Fade speed

con el código de desvanecimiento:

void ColourFade(){
  for(int i=0;i<nLEDs;i++){

    r = ctest(colFade1Red, colFade2Red, r);
    g = ctest(colFade1Green, colFade2Green, g);
    b = ctest(colFade1Blue, colFade2Blue, b);

    FTLEDColour col = { r , g , b };
    led.setLED(i, col);
  }
}

int ctest(int col1, int col2, int cur){
   int temp = col1 - col2;
   if(temp < 0) { temp = -temp; } 

   int alp = (temp / 100) * (incomingByte * sensitivity);

   if(col1 < col2){
     return (cur * fadeAm + (col2 - alp) + fadeAm) / (fadeAm +1 );
   } else {
     return (cur * fadeAm + alp + fadeAm) / (fadeAm +1 );
   }
}

Pero esto comienza con el color del segundo usuario y se desvanece en rosa. ¿Cómo me desvanecería los colores correctamente?

También "incomingByte" es un valor entre 0 y 100, y el código está en un ciclo de actualización.

Respuestas a la pregunta(2)

Su respuesta a la pregunta