Bom, mais uma vez o Flávio Alvarenga fez o melhor trabalho. Quem será capaz de fazer um projeto melhor que ele hein? Abaixo segue o diagrama do Fritzing que ele fez e os dois códigos (Arduino + Processing):
Código Arduino
  
 int V[3] = {6,5,3};  // 6, 5 e 3 escolhidas por serem saídas PWM, capazes de emular um sina analógico.
 int PotRed = 0;  // potenciometro que controla a cor vermelha
 int PotGre = 1;  // potenciometro que controla a cor verde
 int PotBlu = 2;  // potenciometro que controla a cor azul
 int redVal = 0; //acumula o valor da luz vermelha
 int greVal = 0; // acumula o valor da luz verde
 int bluVal = 0; //acumula o valor da luz azul
 void setup() {
     for (int i=0; i<3; i++){   //declara os pinos 9, 6 e 3 como saída   
         pinMode(V[i], OUTPUT);
     }       
     Serial.begin(9600);  
 }  
 void loop() {   
     redVal = (analogRead(PotRed)/4);   // como o valor do potenciometro varia de 0 a 1023 dividindo o valor por 4 obtem-se valores entre 0 e 255* (Pois a variavel e um inteiro).
     greVal = (analogRead(PotGre)/4);   // Faz a leitura dos potenciometros e iguala ao acumulador da sua respectiva cor.
     bluVal = (analogRead(PotBlu)/4);
     redVal = map(redVal, 0, 1023, 0,255); //Ajusta o valor lido para ficar no intervalo [0,255]
     gredVal = map(greVal, 0, 1023, 0,255);
     bluVal = map(bluVal, 0, 1023, 0,255);
     RGB(redVal,greVal,bluVal); // chama a função RGB   
     Serial.print("R");   
     Serial.println(analogRead(PotRed)/4);  //importa para a porta Serial o valor lido na saida analogica 0 e atribui para a cor vermelha   
     Serial.print("G");
     Serial.println(analogRead(PotGre)/4);  //importa para a porta Serial o valor lido na saida analogica 1 e atribui para a cor verde
     Serial.print("B");
     Serial.println(analogRead(PotBlu)/4);  //importa para a porta Serial o valor lido na saida analogica 2 e atribui para a cor azul
     delay(100);
 }
 void RGB(int redVal,int greenVal, int blueVal){  // Transmite o valor lido pelo potenciometro para a porta PWM responsavel pelas cores red, green, blue.
     analogWrite(V[0], redVal); // Escreve o valor do PWM do led vermelho
     analogWrite(V[1], greenVal); // Escreve o valor do PWM do led verde 
     analogWrite(V[2], blueVal); // Escreve o valor do PWM do led azul 
}
No código arduino ele definiu uma função chamada RGB() que define a cor do LED. Poderia ter feito uma função para mandar os dados para a porta serial. 
Código Processing: 
import processing.serial.*;
String buff = "";
int rval = 0, gval = 0, bval = 0;
int NEWLINE = 10;
Serial port;
void setup()
{
  size(800, 800);
  // Imprima uma lista no caso de a COM1 não funcionar
  println("Portas seriais disponíveis:");
  println(Serial.list());
  //port = new Serial(this, "COM1", 9600);
  // Use a primeira porta disponível
  port = new Serial(this, Serial.list()[0], 9600);
}
void draw()
{
  while (port.available() > 0) {
    serialEvent(port.read());
  }
  background(rval, gval, bval);
}
void serialEvent(int serial) 
{ 
  // Se a variável "serial" não for igual ao valor de um caracter
  // nova linha, inclua o valor à variável "buff". Se for igual, 
  // guarde o valor do buffer na variável "val".
  if(serial != NEWLINE) { 
    buff += char(serial);
  } else {
    // O primeiro caractere diz-nos a qual cor se refere
    char c = buff.charAt(0);
    // Remova-o da string
    buff = buff.substring(1);
    // Descarte o retorno de carro ao final do buffer
    buff = buff.substring(0, buff.length()-1);
    // Converta a string para inteiro
    if (c == 'R')
      rval = Integer.parseInt(buff);
    else if (c == 'G')
      gval = Integer.parseInt(buff);
    else if (c == 'B')
      bval = Integer.parseInt(buff);
    // Esvazie "buff"
    buff = "";
  }
}
 
 
mudem a linha para:
ResponderExcluirint V[3] = {6, 5, 3};
pra ficar igual ao esquema do fritzing.
muito bom isso ai!
ResponderExcluirso hj descobri a pagina, mas fica aqui umas reparaçoes:
se ao inicio dividimos por 4 a leitura analogica, ja ficamos com a cor em formato digital no espaço da mesma [0-255] ja nao é necessario realizar o map().pois assim estamos novamente a dividir por 4...
comentario do comando serial:
nao deve "//importa para a porta Serial o valor lido na saida analogica 2 e atribui para a cor azul" mas sim
"//importa para a porta Serial o valor lido na ENTRADA analogica 2 e atribui para a cor..."
CONTINUAÇAO