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.
Mooooooooola!
Gracias, la verdad es que processing con arduino es una gran herramiento de control!!
Tengo cargado el programa en mi arduino y el montaje completado. Mi pregunta ahora es: El programa ese donde esta y como se abre?
Un saludo gracias, adelantadas
Necesitas tener instalado el ide de Processing, que es muy parecido al de arduino, descargarte la libreria que dejo arriba en los enlaces, copiarla en la carpeta de las librerias de Processing, cargar el programa que aparece en el ide del arduino en la carpeta ejemplos Firmata y es el StandardFirmata for Uno. Y por útlimo copiar el código que dejo arriba en el ide de processing y ejecutar, veras como ya te sale el programa.
En este post lo que se hace es crear una aplicación con processing, pero controlable desde el arduino.
Espero haberte resuelto la duda, si no es así ya sabes pregunta de nuevo!!
Gracias por tu pronta respues y disculpa mi ignorancia pero:
Una vez descargada tu libreria, donde la copiaria dentro de la carpeta processing? java/lib/modes/tools?
Es que llevo la tarde probando en varias partes pero despues dentro del programa no encuentro en example la parte que dice Firmata 😦
En el de arduino si sabia donde compiarlo pero aqui no tengo ni idea.
Otra cosa que no entiendo es:
1-Para meter el prgrama en el arduino, lo hacemos desde el programador de arduino.
2-Para abrir el programa, lo hacemos desde procesing?
Es así.
Me seria muy util que me respondieses como a los tontos jajaja si no te es mucha molestia
Un saludo y gracias
De nada Alejandro, para eso estamos. Paso a explicarte lo que debes hacer paso a paso:
1.- Te descargas este enlace el cual contiene las librerias guicomponents y arduino para processing (sin ellas no va a funcionar el programa):
http://www.mediafire.com/?qxj2np77wm7h5m1
2.- Una vez descargado descomprimes el archivo y pegas las librerias en la carpeta, mi ruta es: C:\processing-1.5.1\modes\java\libraries
3.- Vas al IDE de Arduino y cargas el sketch que aparece en File\Examples\Firmata\StandardFirmata_2_2_forUNO_0_3 en tu Arduino (si es el uno es este, si no es este modelo cargas el StandardFirmata).
4.- Acabado con el IDE de Arduino abres el IDE de Processing, copias el código que dejé arriba, y si ya tienes el esquema montado en tu Arduino y el Arduino conectado por USB al ordenador, le das al play que aparece en el IDE de Processing y te debería de salir la ventana del programa.
5.- Listo y a divertirse!!
Si aún tienes alguna duda ya sabes. Un saludo!!
Alguien me puede pasar el StandardFirmata?? xD esque a mi no me funciona, osea me carga la interfaz el processing pero no se enciende ná
Esto es lo que le he metio yo a arduino:
"/*
* Firmata is a generic protocol for communicating with microcontrollers
* from software on a host computer. It is intended to work with
* any host computer software package.
*
* To download a host software package, please clink on the following link
* to open the download page in your default browser.
*
* http://firmata.org/wiki/Download
*/
/* Supports as many digital inputs and outputs as possible.
*
* This example code is in the public domain.
*/
#include
byte previousPIN[TOTAL_PORTS]; // PIN means PORT for input
byte previousPORT[TOTAL_PORTS];
void outputPort(byte portNumber, byte portValue)
{
// only send the data when it changes, otherwise you get too many messages!
if (previousPIN[portNumber] != portValue) {
Firmata.sendDigitalPort(portNumber, portValue);
previousPIN[portNumber] = portValue;
}
}
void setPinModeCallback(byte pin, int mode) {
if (IS_PIN_DIGITAL(pin)) {
pinMode(PIN_TO_DIGITAL(pin), mode);
}
}
void digitalWriteCallback(byte port, int value)
{
byte i;
byte currentPinValue, previousPinValue;
if (port < TOTAL_PORTS && value != previousPORT[port]) {
for(i=0; i<8; i++) {
currentPinValue = (byte) value & (1 << i);
previousPinValue = previousPORT[port] & (1 << i);
if(currentPinValue != previousPinValue) {
digitalWrite(i + (port*8), currentPinValue);
}
}
previousPORT[port] = value;
}
}
void setup()
{
Firmata.setFirmwareVersion(0, 1);
Firmata.attach(DIGITAL_MESSAGE, digitalWriteCallback);
Firmata.attach(SET_PIN_MODE, setPinModeCallback);
Firmata.begin(57600);
}
void loop()
{
byte i;
for (i=0; i<TOTAL_PORTS; i++) {
outputPort(i, readPort(i, 0xff));
}
while(Firmata.available()) {
Firmata.processInput();
}
}"
Ok, te las pongo en este enlace: http://www.mediafire.com/?g057d843szwk6au
Por lo que veo es un código muy corto de firmata el que tienes metido en el arduino, el que uso yo es el standarda firmata for uno. Prueba el que te subo y me comentas. A ver si así te funicona, un saludo!!
Vale al final funciona todo, pero de una manera muy extraña, no he seguido lo de el dibujo. Y solo se enciende el rojo, si cambias el GND a otra patilla, se enciende el verde (en fin una paranoya)
Mi led RGB se ve que tiene solo un positivo. Si hago esto funciona: http://www.seeedstudio.com/wiki/images/thumb/1/17/Arduino_Sidekick_RGB_LED_Display.jpg/400px-Arduino_Sidekick_RGB_LED_Display.jpg
Sacado de http://www.seeedstudio.com/wiki/index.php?title=Arduino_Sidekick_Basic_Kit que es un manual de como usar el kit de cosas que compre.
Nose si mi RGB se podrá usar para esto o no…
Perdona las molestias
No pasa nada, lo único es que tú led RGB a lo mejor es de ánodo común y el mío de cátodo común. Esto por si no lo sabes es:
Ánodo común: tiene una patilla común de alimentación (los 5V) y las otras tres patillas del led son las correspondientes a los colores rojo, azul y verde que vas a tener que activar sacando por los pines digitales del arduino un ‘0’ en lugar de un ‘1’.
Cátodo común (los míos): tiene una patilla común de masa (GND) y las otras tres patillas del led son las correspondientes a los colores rojo, azul y verde que vamos a activar sacando por lo pines digitales del arduino un ‘1’ en lugar de un ‘0’.
Para el tema seria ir variando por los pines pwm el valor para ir aumentando o disminuyendo la luminosidad de los leds, si va aumentando el valor se va a aproximar a los 5V de alimentación y por tanto la luminosidad sería menor hasta que se apagaran.
Prueba a hacer esto que te comento, ya que si los tuyos son de ánodo común van a encenderse de la manera descrita arriba, tú sigue preguntando y probando que seguro que damos con el quiz de la cuestión.
Muchas gracias por ayudarme.
Bien, veamos, ahora mismo, si todos los colores los pongo al maximo, se apaga todo.
El programa, funciona como deberia funcionar, solo que al maximo , el led esta apagado, y al minimo , el led esta a toda caña jajaja.
Estas hecho un maquina en esto tio xD
Jaja perfecto!! lo de que funciona al revés es por lo que te comentaba de los niveles pwm, que para que te funcione bien debes modificar en el programa de processing para que te vaya al revés, es decir, que tus niveles empiecen en 255 y según aumentes en las zonas vaya disminuyendo el valor a sacar por los pwm del arduino, luego a ver si lo miro y te digo como hacerlo. Un saludo y me alegro de que te haya funcionado!!!
Hola! estuve toda la tarde intentando que funcione con Arduino Mega2560 y no lo he logrado. hay alguna forma de hacerlo funcionar?, tengo los software arduino 1.0.1 y processing 2.0b3. muchas gracias!!
Hola Adrian!! Te comento, he estado probando y buscando soluciones este fin de semana para tu problema, y he llegado a la conclusión de que funciona perfectamente tanto con el IDE 022 (el que uso yo), como con el IDE 1.0.1 (el que usas tú), así que el problema viene de usar la versión de Processing 2.03b ya que es una versión beta y presenta muchos bugs aún, con la versión 1.5.1 (que es una versión estable del programa processing) funciona perfectamente, lo he probado tanto en un Arduino Uno, Nano y Mega 2560. Así que supongo que la solución es que te bajes dicha versión y pruebes a ver si así te funciona!!
Un saludo!!
Hola, sabes como hacer para hacer funcionar 30 leds juntos, vi la forma de hacerlo con leds de anodo comun y un integrado ULN 2803, pero yo tengo leds de catodo comun y no se si hay algun otro integrado que me permita controlar la energia de los 12 V. por medio del arduino.
Saludos
Hola Miguel!! Pues no te sabría decir bien. La única diferencia de los diodos ya está explicada arriba en los comentarios, en lugar de conectar la patilla común a 12V, deberías conectarla a GND del ULN2803 supongo, no he realizado pruebas, a ver si puedo probar y te comento, mira a ver si encuentras como poder conectar un led rgb cátodo común a un uln2803 y de ahí solo sería modificar para conectar los demás. He encontrado en una web un esquema pero de ánodo común como tú dices, http://www.ledfacil.com.ar/circrgb.html
Yo probaría con uno a conectar en lugar de a 12V a GND el común y a realizar la prueba, para evitar problemas con el arduino lo haría según el esquema mediante potenciometros y a ver que sacas de eso.
Un saludo!!
Hola! excelente programa, pero tengo problemas en processing intenté de todo, trabajo en ubuntu, pero no soy muy experto, supuse que era por eso asi que me cambie a trabajar en windows tampoco funcionó, en ubuntu tenía un problema con la libreria de arduino, decía que faltaba la libreria en el sketchbook, cuando la tenía puesta correctamente y en windows me muestra un error en esta linea
arduino = new Arduino(this, Arduino.list()[3], 57600); //Creamos el componente para trabajar con Arduino desde el programa
reemplazo el numero por el puerto virtual que utiliza en estos momentos el arduino y no pasa nada, luego muestra el siguiente mensaje abajo
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
Exception in thread «Animation Thread» java.lang.ArrayIndexOutOfBoundsException: 3
at sketch_121104a.setup(sketch_121104a.java:39)
at processing.core.PApplet.handleDraw(PApplet.java:2103)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:190)
at processing.core.PApplet.run(PApplet.java:2006)
at java.lang.Thread.run(Thread.java:662)
Que podrá ser?
saludos
Juan Pablo
Hola Juan Pablo!! En esta línea que te da el error: arduino = new Arduino(this, Arduino.list()[3], 57600); //Creamos el componente para trabajar con Arduino desde el yo el número que le pongo no es el que tiene asociado al puerto COM, es uno que asigna el pc según los dispositivos serie que tengas conectados, vete probando desde el 0. A ver si te funciona, si no miro de ponerte algún código para que te aparezca los dispositivos serie que tienes conectados. Probaré también en Ubuntu, que lo tengo instalado ahora y a ver si me funciona o no y te comento.
Un saludo!!
DISCULPA, MIRE UN POCO TU CODE, Y LOS QUE VEO QUE ENVIAS DIRECTAMENTE EL VALOR
A LOS LEDS, ES DECIR R=233,G=222,B=111 , SIN HACER ALGUNA CODIFICACION. ME EXPLICO ? «SI POQ NO TE ENRIWNDO»
EJEMPLO SI DISPONGO DE 100 LEDS, ENTONCES PARA CADA LEDS DEBERIA ENVIAR (R,G,B) OSEA POR 3. ENTOCES DEBERIA GURDAR 300 NUMEROS EN AARDUINO, POBRE ARDUINO, SE AGOTA LA MEMORIA.
ES DECIR HAY ALGUNA MANERA MAS EFICIENTE DE GUARDAR LOS DATOS.??
POR EJEMPLO, SI DISPONGO DE 8 LEDS, COMUNES, Y PROGRAMA PARA QUE SE ENCIENDAN EN UNA SECUANCIA QUE SE ME DE LA GANA, ENTONCES PODRIA USAR UN BYTE , DONDE ESTE ME DICE, ME REPRESEBTA LOS 8 LEDS, SI ESTA ENCIENDIDOS O NO .
EJEMPLO: 255, SI LOS DESCOMPONGO EN BYTES, ENTOCES LOS 8 LDES ESTARAN ENCEDIDOS-
COMO PODRIA HACER ESTO CON LEDS RGB?,
SALUDOS!!
HI, CREO QUE ESTA PUEDE SER LA SOLUCION
http://es.wikipedia.org/wiki/Modelo_de_color_RGB
ahora como convierto hexadecimal rgb- para que luego arduino me decodifique para los valores r,g,b
es decir, # FF0000, representa (255,0,0), como hago para que arduino me tome ese hex y e decodifique ?
he encontrado esta solucion, pero usa un long sin signo–32bits.
la verdad no se si es necesario usar este tipo. se podria usar un tipo de dato de menot tamaño?, para
hacer mas eficiente el uso de la memoria
——————————–
const uint32_t ORANGE = 0xFF7F00;
const unsigned long TEAL = 0x008080;
const unsigned long AUBERGINE = 0x614051;
void setup() {
// No setup required.
Serial.begin(115200);
}
void loop() {
// Cycle through our awesome colors
setColor(ORANGE);
}
void setColor( uint32_t color) {
// Extract the intensity values from the hex triplet
byte red = (color >> 16) & 0xFF;
byte green= (color >> 8) & 0xFF;
byte blue = color & 0xFF;
Serial.println(red);
Serial.println(green);
Serial.println(blue);
Serial.println(red,DEC);
Serial.println(green,DEC);
Serial.println(blue,DEC);
Serial.println(red,HEX);
Serial.println(green,HEX);
Serial.println(blue,HEX);
delay(800);
Serial.println(«__________________________»);
// Display the requested color
// analogWrite(RED_LED_PIN, redIntensity);
// analogWrite(GREEN_LED_PIN, greenIntensity);
// analogWrite(BLUE_LED_PIN, blueIntensity);
}
———————————
Hola Juan Pablo! Yo tenía también ese problema con processing y arduino en ubuntu, pero después de muchas horas de buscar y buscar he dado con la solución.
Primero de todo debes de crear dentro del sketchbook de processing una carpeta llamada libraries donde vas a meter todas las librerias para processing, incluido la de arduino.
Segundo: Una vez copiadas las librerias a esa carpeta, entras en la carpeta arduino y dentro de esta en la carpeta library, donde verás un archivo llamado «Arduino.jar», pues bien lo vas a renombrar así «arduino.jar».
Tercero: Yo me he descargado la nueva versión del IDE de Arduino, la versión 1.0.2, la descomprimo en mi carpeta personal y creas un lanzador para ejecutar el IDE. Dentro de la carpeta arduino-1.0.2 vas a ir a la carpeta lib y copiarás los siguientes archivos a las rutas que te ponga:
RXTXcomm.jar a la carpeta processing-1.5.1//modes/java/libraries/serial/library/ y lo pegas ahí, sustituyendo el que tienes.
librxtxSerial.so a la carpeta processing-1.5.1//modes/java/libraries/serial/library/linux32 y lo pegas.
librxtxSerial64.so a la carpeta processing-1.5.1//modes/java/libraries/serial/library/linux64 y lo pegas.
Cuarto y último: abres una consola con el arduino enchufado al pc y escribes lo siguiente, sudo ln -s /dev/ttyACM0 /dev/ttySA0 , esto creará un vinculo del arduino al puerto serie 0, en el código processing pones la siguiente línea sustituyendo la que tenías antes arduino = new Arduino(this, Arduino.list()[0], 57600); //Creamos el componente para trabajar con Arduino desde el programa.
A mi me ha funcionado perfectamente, he probado desconectando el arduino, cerrando el programa de processing y me falta probar a reiniciar el ordenador para ver si el vínculo sigue hecho, sino solo habría que introducir por consola ese comando.
En windows yo no tengo ningún problema, con dicho código, vete probando distintas posiciones del puerto serie.
Un saludo y espero haberte ayudado!!
Hola Omnimusha!! No entiendo muy bien lo que quieres hacer. Quieres conectar 100 leds RGB que trabajen de forma independiente con tu arduino?? Este ejemplo es un ejemplo muy básico donde coje el valor de unas librerías directamente y las envía al arduino para que encienda el led RGB conectado según el color que indique el programa de processing. La verdad es que no me he pensado en hacer ninguna codificación, habría que mirar como hacerla para que sea más eficiente y no consuma mucha memoria de programa. Cuentame un poco más sobre la idea que tienes tanto del circuito como de la programación y a ver que podemos sacar en claro.
A ver si mañana sigo mirando algo de lo del Bluetooth. Has conseguido algún avance? como vas con el tema?
Un saludo
ja, yo que me habia esmerado en que me entiendan lo espuesto. mas coherente no se como explicarlo.
en cuento al bluetooch ya me tiene podrido, no se poq no me anda.
de 5 maquinas en que probe ,3 de ellas funciona al toque.
*primiero pense que podria ser la version del java, probe con las 6 y 7 . y nada.
*tambien pense que podria ser la version de frameword, tampoco
*probe version de windows, pobe con windows 7 ultimate y 8 pro, tampoco
*las otras maquinas tenia el windows 7 profecional y 3 de ellas funciona, algo raro-
con windows xp tampoco me funca-
*mi maquina tiene usb 1.1, pero el bluetooock que me compre (chino), es compatiple.
*probe con distintos programas y los que no usan java funciona . es decir los archivos rxtxserial y el otro no me acuerdo como se llama.
*hasta me fije que version tenia los driver del bluetoch, todos los windows 7 (v.6.1)tienen la misma version, xp tiene una version 5……, y windows 8 6.2
conclusion:
una cag…da .sin duda hay una incopatibilidada de java. pero de que tipo?, no se como dije probe con barias versiones y nada, hasta me baje exatamente la vercion en la que funcionaba .
Buenas,
Muchas gracias por el tutorial, me ha animado a probar esto del processing con Arduino…
En windows, me da el sigiente error al crear la variable arduino
Exception in thread «Animation Thread» java.lang.IllegalAccessError: tried to access class processing.core.PApplet$RegisteredMethods from class cc.arduino.Arduino$SerialProxy
He comprobado mediante println(Arduino.list()) que el valor del puerto COM en mi caso es el 2.
¿A alguien le ha pasado?
¿Alguna sugerencia?
Hola,
Me contesto a mi mismo (las prisas)
Funciona correctamente en la versión de processing 1.5.1
No funciona el la 2 beta 7 que es la que me baje.
Creo que hay un parche para la librería aruino que solucione el tema.
Gracias, un saludo.
hola amigo a la hora de quemarlo en el arduino no hay ningun problema y ya e pegado las librerias pero a la hora de querer correr el programa en processing me dice que tiene un error de unexpected token:2}
que es en esta parte me podrias ayudar por favor
HOLA ME SUGERIENCIA ES QUE NO USES LA LIBRERIA HECHA PARA PROCESSING import cc.arduino.*;, PARA CAGAR EL STRECH AL ARDUINO. PUEDE LLEGAR A CREAR CONFUNCIONES A LA HORA DE PROGRAMAR Y TAMPOCO SE QUE TAN ÑIMITADA PUEDE SER ESTA LIBRERIA.
…..TE SUGIERO QUE PONGAS TU CODE, Y SI PUEDE AGRAGAR UNA FOTOAS . CUANTA MAS INFO PONGAS MEJOR TE PODREMOS AYUDAR REFERENTE A TU PROBLEMA
Omni
hola amigo me aparece error de token en 02 import processing.serial.*; de tu codigo y de ahi no salgo la verdad e buscado por todas partes y no se donde meter exactamente las librerias de arduino y la que tu pides que descarguemos le e intentado de todo y de plano no puedo comunicar arduino con processing
las librerias las pego en C:\Users\…\Desktop\processing-2.0b8\modes\java\libraries
y de plano no puedo comunicar mm mi arduino esta en com4 tiene algo que ver?
porfa ayudame no subi fotos por que no mire la opcion
arduino = new Arduino(this, Arduino.list()[2], 57600);
PON EL 4 , YA QUE ES DONDE ESTA TU ARDUINO.
arduino = new Arduino(this, Arduino.list()[4], 57600); // CUATRO
LA VERDAD TOY ADIVINANDO POQUE NO SE CUAL ES EXACTAMENTE TO PROBLEN, YA QUE PUBÑICASTE NADA
JAJAJAJA SI ENTIENDO DISCULPAME
TE EXPLICO
QUE NO SE DONDE EXACTAMENTE DEBO PONER LA LIBRERIA ARDUINO DENTRO DE PROCESSING YA QUE E INTENTADO PONERLO EN VARIAS CARPETAS LLAMADAS LIBRERIAS Y CUANDO COMPILO PROCESSING ME DICE COMO QUE LA LIBRERIA ARDUINO.CC ESTA EN DIFERENTES UBICACIONES Y COMO QUE NO SABE CUAL POR ESO TE PIDO QUE ME AYUDES A DONDE PONER LA LIBRERIA DE ARDUINO DENTRO DE PROCESSING Y COMO COMUNICAR ARDUINO CON PROCESSING YA QUE NO E PODIDO POR QUE EN PROCESSIN NO ME CORRE LAS LIBRERIAS,
DISCULPA AMIGO SOY NUEVO EN ESTO
me he bajado la libreria de aqui http://arduino.cc/playground/uploads/Interfacing/processing-arduino.zip
tira la carpeta arduino a :
D:\processing\modes\java\libraries
—otra cosa , parece que le libreria no es compatiple cpm processing 2.0, bajate la 1.5
he instala RXTX-2.1-7—— aqui como lo hacen—http://forum.processing.org/topic/how-do-i-install-rxtx-2-2pre1-jar-on-windows-7#25080000000981023
Omni
GRACIAS AMIGO POR TU AYUDA YA PUDE METER LA LIBRERIAS Y TODO SOLAMENTE HAY UN PROBLEMA CON EL PROCESSING 1.5 NO APARECE EL ICONO PARA ABRIR EL PROGRAMA APARECE TODO MENOS EL CODIGO MM EL QUE TU USAS ES PARA MAC O WINDOWS? YO ESTOY USANDO WINDOWS 7 32 BITS
jajaja de lo anterior ya lo solucione es que sin querer lo vaje para mac jajajaja
ya descarque el processing 1.5 ya le meti las librerias y en la parte de la libreria de processing me aparece error y este es el error que me marca
processing.app.SketchException: unexpected token: 02
at processing.mode.java.JavaBuild.preprocess(JavaBuild.java:326)
at processing.mode.java.JavaBuild.preprocess(JavaBuild.java:197)
at processing.mode.java.JavaBuild.build(JavaBuild.java:156)
at processing.mode.java.JavaBuild.build(JavaBuild.java:135)
at processing.mode.java.JavaMode.handleRun(JavaMode.java:176)
at processing.mode.java.JavaEditor$20.run(JavaEditor.java:481)
at java.lang.Thread.run(Thread.java:662)
si me puedes ayudar porfa
no men ni idea. no se si tienes la pc puesta de cabeza o que.
consejo- de lo mas simple a lo mas complejo.
proba esto este code es para arduino sofware
///////////////////////////////////////////////////////////////
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(«hello, I AM Omni»);
delay(200);
}
//////////////////////////////////////////////////////////////////
Para processing:
////////////////////
import processing.serial.*;
Serial myPort; // Create object from Serial class
void setup()
{
size(200, 200);
String portName = Serial.list()[0];
println(«CUAL ES TU PUERTO DE ARDUINO ???===»+portName);
myPort = new Serial(this, «COM4», 9600); //9600 MISMA VELOCIDAD QUE ARDUINO
}
void draw()
{
if ( myPort.available() > 0) { // If data is available,
println(«estoy resiviendo de arduino==»+ myPort.readString());
}
}
///////////////////////
pd; si no te funciona, formatea la maquina.ja
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,?
Todo el código dentro del sketch de arduino es necesario para hacer funcionar la comunicación con la interfaz?
depende de lo que quieras hacer-
si decea hacer lo que el autor hiso, pues copy y pegue el code , y cargaguelo al arduino. es todo.
pd: esto lo publique el dia 7 mayo, pues la ultima se tarda una semnana para dale ok el admin,
deberia pober en automotico y se hace mas fuido esto
Hola Joel!!
El código del sketch FIRMATA para arduino es una librería que te permite realizar la programación del arduino a través del software processing, sin necesidad de programar nada en tu arduino (cargando solo dicho sketch). Puedes mirar en el siguiente enlace más información sobre la comunicación entre arduino y processing y sobre el sketch firmata: http://playground.arduino.cc/interfacing/processing
Un saludo!!
Hola Omnimusha!!
Siento lo de los comentarios en el blog, pero creeme es necesaria la aprobación de dichos comentarios ya que hay montones de comentarios de spam y demás que lo único que hacen es molestar, supongo serán comentarios de bots o algo de eso.
Intentaré de aprobar los comentarios con la mayor rapidez posible, y te pido disculpas por las molestias.
Un saludo!!
bien dia
me colaborarias dejando es scrip la programacion de arduino y processing
agradezco
y si para arduino duemilanova es igual ???
Hola Orlando!!
Todo lo necesario para poder realizar este montaje lo tienes en esta misma entrada, para Arduino llega con cargarle el código del StandardFirmata y luego el sketch que aparece ahí es para cargar desde processing. Supongo que sí que funcionará igual para la versión duemilanove que para la versión UNO, si no te funciona prueba la versión OldStandardFirmata que trae el IDE de Arduino en los ejemplos de Firmata. Un saludo!!
Como puedo calibrar los colores del led?
Hola Abraham!!
No entiendo muy bien a que te refieres con lo de calibrar los colores, ¿quieres decir como obtener los valores RGB para cada color correspondiente?, puedes usar muchos programas de edición de imágenes con los que obtener esos valores, yo usaba gimp y el selector de color me proporcionaba los valores RGB.
Un saludo!!