Mezclador virtual de colores
Potenciómetros conectados a las entradas analógicas de los pins 0, 1, y 2.
Código para cargar a través del IDE Arduino en la tarjeta.
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);
}
Código para cargar y ejecutar desde el IDE Processing una vez que ya hemos cargado el código anterior
/**
* Mezcla de colores
* by David A. Mellis
*
* Created 2 December 2006
*
* based on Analog In
* by <a href="http://itp.jtnimoy.com">Josh Nimoy</a>.
*
* Created 8 February 2003
* Updated 2 April 2005
*/
import processing.serial.*;
String buff = "";
int rval = 0, gval = 0, bval = 0;
int NEWLINE = 10;
Serial port;
void setup()
{
size(200, 200);
// Imprime una lista con los puertos disponibles de tipo COM
println("Puertos disponibles:");
println(Serial.list());
//port = new Serial(this, "COM1", 9600);
// Usa el primer puerto disponible
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)
{
/ / Si la variable "serial" no es igual al valor para
/ / una nueva lÃnea, añadir el valor a la variable "buff". Si el
/ / valor "serial" es igual al valor de una nueva lÃnea,
/ / guardar el valor en el buffer dentro de la variable "val".
if(serial != NEWLINE) {
buff += char(serial);
} else {
/ / El primer carácter nos dice que tipo de color es el valor
char c = buff.charAt(0);
//lo quita de la cadena
buff = buff.substring(1);
/ / Descartar el retorno de carro al final del buffer
buff = buff.substring(0, buff.length()-1);
// Convierte el string en un entero
if (c == 'R')
rval = Integer.parseInt(buff);
else if (c == 'G')
gval = Integer.parseInt(buff);
else if (c == 'B')
bval = Integer.parseInt(buff);
/ / Borrar el valor de "buff"
buff = "";
}
}
if(serial != NEWLINE) {
buff += char(serial);
} else {
/ / El primer carácter nos dice que tipo de color es el valor
char c = buff.charAt(0);
//lo quita de la cadena
buff = buff.substring(1);
/ / Descartar el retorno de carro al final del buffer
buff = buff.substring(0, buff.length()-1);
// Convierte el string en un entero
if (c == 'R')
rval = Integer.parseInt(buff);
else if (c == 'G')
gval = Integer.parseInt(buff);
else if (c == 'B')
bval = Integer.parseInt(buff);
/ / Borrar el valor de "buff"
buff = "";
}
}