// Luis Álvarez
// Importamos las librerías que utilizaremos
// Que son ControlP5 y Serial del Processing
import controlP5.*;
import processing.serial.*;
// Definimos la variable cP5 del tipo ControlP5
ControlP5 cP5;
// Definimos el Serial
Serial serial;
int[] led = new int[] {
0, 0, 0, 0, 0, 0, 0, 0
};
// Configuración inicial
void setup() {
//Tamaño de la ventana
size(590, 250);
noStroke();
//Instanciamos el objeto ControlP5
cP5 = new ControlP5(this);
//Creamos los controladores para los leds
for (int i=0; i<led.length; i++)
{
cP5.addToggle("led"+i, 35+i*70, 140, 30, 30)
.setMode(ControlP5.SWITCH);
}
// Definimos el puerto
String puerto = Serial.list()[0];
// Comunicación serial a 9600bps
serial = new Serial(this, puerto, 9600);
}
void draw() {
//Color de fondo
background(#3B170B);
fill(led[0] == 0 ? 0xFF222222 : color(255, 255, 0));
ellipse(50, 100, 50, 50);
for (int i=1; i<4; i++) {
fill(led[i] == 0 ? 0xFF222222 : color(255, 0, 0));
ellipse(50+i*70, 100, 50, 50);
}
for (int i=4; i<led.length; i++) {
fill(led[i] == 0 ? 0xFF222222 : color(0, 255, 0));
ellipse(50+i*70, 100, 50, 50);
}
fill(255);
textFont(createFont("Arial", 40));
text("Enciende un LED", 40, 50);
fill(255);
textSize(25);
text("Laboratorio 6", 120, 230);
}
// Este evento se ejecuta cuando se mueve algo dentro del prosessing
void controlEvent(ControlEvent evento) {
//Guardamos el nombre
String nombre = evento.getController().getName();
//Guardamos el valor
int valor = int(evento.getController().getValue());
// Recorremos los botones y los asignamos
for (int i=0; i<led.length; i++) {
if (nombre.equals("led"+i)) {
led[i] = valor;
serial.write(i);
serial.write(valor);
println("evento: " + i + " / valor: "+valor);
}
}
}