Resultado da segunda tarefa.
Autor: Daniel Girardi | Publicado: 2011-07-04T09:43:00-07:00

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&lt;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 = "";  }}