Después de ver los videotutoriales de 0xDA_bit sobre Processing, me entró el gusanillo de probar de nuevo este maravilloso software, y decidí hacer el control de un led RGB conectado a Arduino pero modificando sus componentes de color mediante un programa realizado en Processing.
Para realizar dicho cometido me puse a buscar librerias de componentes para añadir a nuestros programas que vayamos realizando en Processing e ir haciendolos más profesionales y más complejos. Dicha librería la podéis descargar desde http://www.mediafire.com/?as8bnrkfk9v8kjf o bien desde la siguiente página web http://www.lagers.org.uk/g4p/.
Os dejo el esquemático de conexión del diodo led RGB a Arduino y también una imagen del software:
Aquí tenéis el video de funcionamiento:
Para el código basta con grabar en el Arduino el ejemplo que trae el IDE de Arduino que está en Firmata y es el StandardFirmata for Uno, y este es el código para processing (acordaros de copiar la librería guicomponents en processing):
//Añadimos las librerias necesarias import processing.serial.*; import cc.arduino.*; import guicomponents.*; Arduino arduino; /*Programa simple que crea 3 selectores de color para controlar los componentes RGB de un diodo led conectado a Arduino.*/ GKnob knbRed, knbGreen, knbBlue; int r, g, b; //variables donde guardaremos el valor correspondiente a cada componente de color int kx, ky; void setup() { size(400, 220); arduino = new Arduino(this, Arduino.list()[2], 57600); //Creamos el componente para trabajar con Arduino desde el programa //Arriba donde pone Arduino.list()[], el 2 es donde me reconoce a mi el Arduino, puede ser 1 o 0, depende de las cosas conectadas //mediante puerto serie virtual r = g = b = 160; //iniciamos cada componente a un valor de 160 (entre 0 y 255) arduino.analogWrite(10,r); //Escribimos dichos valores en los 3 pines asignados para controlar nuestro diodo led RGB arduino.analogWrite(9,g); arduino.analogWrite(6,b); kx = 20; ky = 20; //Creacción y control del programa en processing, viene todo hecho en los ejemplos de la libreria guicomponents G4P.setMouseOverEnabled(true); G4P.cursor(HAND, CROSS); knbRed = new GKnob(this, kx, ky, 150, 150, 270); knbRed.setControlMode(GKnob.CTRL_ANGULAR); knbRed.setRotArcOnly(true); knbRed.setLimits(r, 0, 255); knbRed.setNbrTickMarks(9); knbRed.localColor = GCScheme.getColor(this, GCScheme.RED_SCHEME); knbGreen = new GKnob(this, kx + 8, ky, 150, 270, 20); knbGreen.setControlMode(GKnob.CTRL_ANGULAR); knbGreen.setRotArcOnly(true); knbGreen.setLimits(g, 0, 255); knbGreen.setNbrTickMarks(9); knbGreen.localColor = GCScheme.getColor(this, GCScheme.GREEN_SCHEME); knbBlue = new GKnob(this, kx + 4, ky + 9, 150, 20, 150); knbBlue.setControlMode(GKnob.CTRL_ANGULAR); knbBlue.setRotArcOnly(true); knbBlue.setLimits(b, 0, 255); knbBlue.setNbrTickMarks(9); stroke(0); strokeWeight(3); rectMode(CORNERS); } void draw() { background(220, 220, 255); fill(r, g, b); rect(kx + 190, 40, width - 40, height - 40); fill(0); text("Drag mouse in circular movement around the knobs centre", 10, height-10); } //En esta función es donde mando el valor pwm al arduino para cada color del led RGB void handleKnobEvents(GKnob knob) { if (knob == knbRed){ r = knob.getValue(); arduino.analogWrite(10,r);} else if (knob == knbGreen){ g = knob.getValue(); arduino.analogWrite(9,g);} else if (knob == knbBlue){ b = knob.getValue(); arduino.analogWrite(6,b);} }
Espero que os guste!!
Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.