Demonstra uma técnica de transmitir valores múltiplos a partir da placa Arduino, ao computador. Neste caso, as leituras de três potenciômetros são usadas para ajustar as componentes vermelha, azul e verde do fundo de um esboço Processing.
Potenciômetros conectados aos pinos analógicos 0, 1 e 2.
int redPin = 0; int greenPin = 1; int bluePin = 2; void setup() { Serial.begin(9600); } void loop() { Serial.print("R"); Serial.println(analogRead(redPin)); Serial.print("G"); Serial.println(analogRead(greenPin)); Serial.print("B"); Serial.println(analogRead(bluePin)); delay(100); }
/** * Misturador de Cores * por David A. Mellis * * Criado em 2 Dezembro 2006 * * baseado em Analog In * por <a href="https://itp.jtnimoy.com">Josh Nimoy</a>. * * Criado em 8 Fevereiro 2003 * Atualizado em 2 Abril 2005 */ import processing.serial.*; String buff = ""; int rval = 0, gval = 0, bval = 0; int NEWLINE = 10; Serial port; void setup() { size(200, 200); // 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 = ""; } }