RGB led-fade via pot read

Hab mich kurz hingesetzt und das Ding gebastelt...
Kann man bestimmt noch aufhübschen, aber es funktioniert.

unsigned int pPin = 0;            // Pin des Potis
unsigned int pVal, tempVal = 0;   // Wert des Potis und TempVariable
unsigned int pRes = 1023;         // Maximalwert des Potis
double pCol = 170;                // 1024/6 = ca 170; Wertebereich der Farben

double dr,dg,db = 0;              // Double der Farben um dividieren zu können.
unsigned int r,g,b = 0;           // Int der Farben für absolute Werte

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  tempVal = pVal;
  pVal = analogRead(pPin);

  // alle Farben auf null;
  r = g = b = 0;
     
  // rot an 
  if (pVal < pCol)
  { 
    dr = pVal/pCol*256;
    r = (int)dr;
  }
  
  // grün dazu
  if (pVal < pCol*2 && pVal > pCol)
  {
    r = 255;
    dg = (pVal-pCol)/pCol*256;
    g = (int)dg;
  }
  
  // rot weg
  if (pVal < pCol*3 && pVal > pCol*2)
  {
    g = 255;
    dr = 256 - ((pVal-pCol*2)/pCol*256);
    r = (int)dr;
  }
  
  // blau dazu
  if (pVal < pCol*4 && pVal > pCol*3)
  {
    g = 255;
    db = (pVal-pCol*3)/pCol*256;
    b = (int)db;
  }
  
  // grün weg
  if (pVal < pCol*5 && pVal > pCol*4)
  {
    b = 255;
    dg = 256 - ((pVal-pCol*4)/pCol*256);
    g = (int)dg;
  }
  
  // rot dazu
  if (pVal <= pCol*6 && pVal > pCol*5)
  {
    b = 255;
    dr = (pVal-pCol*5)/pCol*256;
    r = (int)dr;
  }
  
  // Freilauf des Potis am Ende - 100% Blau, 100% rot
  if (pVal > 1015)
  {
    r=b=255;
  }
  
  
  // nur bei Wertveränderung schreiben 
  if (tempVal != pVal)
  {
    Serial.print("pval: ");
    Serial.print(pVal);
    
    Serial.print("  r:");
    Serial.print(r);
    
    Serial.print("  g:");
    Serial.print(g);
  
    Serial.print("  b:");
    Serial.print(b);
    
    Serial.println();
  }
}

Grüße
Marcus