Documentos de Académico
Documentos de Profesional
Documentos de Cultura
http://diymakers.es/arduino-processing-primeros-pasos/
(http://diymakers.es/)
(https://www.facebook.com/diymakers)
gle.com/+DiymakersEs)
(http://www.twitter.com/diymakers)
(http://goo-
(https://www.youtube.com/user/DIYMakerselectronics)
(5/1/13)
En este tutorial veremos que es Processing, aprenderemos sus funciones ms bsicas y como
comunicarse con Arduino.
Material
-Arduino Uno Rev 3
1 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
Qu es Processing?
Processing es un lenguaje de programacin y entorno de desarrollo integrado de cdigo abierto bas
ado en Java. Fue iniciado porBen FryyCasey Reasa partir de reexiones en elAesthetics and Comp
utation Groupdel MIT Media Lab dirigido porJohn Maeda.
Una vez instalado Processing en el PC, veris que es muy similar al IDE de Arduino, ya que este est
basado en Processing. Solo cambia el botn PLAY que sirve para arrancar el entorno creado con el pr
ograma, y el botn STOP que sirve para pararlo.
Es muy comn usar Processing con Arduino para crear un entorno de visualizacin de datos mucho
ms atractivo visualmente y con ms posibilidades que si usamos el Monitor Serial del IDE de Arduin
o.
2 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
rco de pxeles, cada uno registrado con una coordenada (X, Y). El origen del grco est situado a l
a esquina izquierda arriba con las coordenadas (0, 0). Si sumamos a X, nos desplazamos a la derecha
. Si sumamos a Y, nos desplazamos hacia abajo.
3 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
4 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
Preparar Arduino
Primero de todo, vamos a encargarnos del harware del Arduino conectando el sensor de temperatur
a LM35 y el Led.
5 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
os mximos de seal que da el sensor) y dividirlo por 1023 que es el entero ms grande en un rang
o de 10 bits. Luego tenemos que convertir este voltaje en grados centgrados. Ahora tenemos que 1
0mV son 1C. Si multiplicamos estos 10mV por 100, tendremos que 1V son 1C. La formula nal sera
la siguiente:
Programa Arduino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
www.diymakers.es
by A.Garca
Arduino + Processing: Primeros Pasos
Tutorial en: http://diymakers.es/arduinoprocessingprimerospasos/ (http://diymakers.e
*/
int led=9;
int temp;// Variable sensor de temperaura
boolean status=LOW; //Estado del led
void setup()
{
Serial.begin(9600);
pinMode(led,OUTPUT);
}
void loop()
{
temp = analogRead(A0); //Lee los datos del sensor LM35
temp = (5.0 * temp * 100)/1023.0;//Formula para convertir a C
Serial.write(temp); //Enviamos los datos en forma de byte
delay(100);
if(Serial.available()>0)//Si el Arduino recibe datos a travs del puerto serie
{
byte dato = Serial.read(); //Los almacena en la variable "dato"
if(dato==65) //Si recibe una "A" (en ASCII "65")
{
status=!status; //Cambia el estatus del led
}
digitalWrite(led,status);
}
}
Programa Processing
6 de 19
07/06/2016 14:09
7 de 19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
http://diymakers.es/arduino-processing-primeros-pasos/
/*
www.diymakers.es
by A.Garca
Arduino + Processing: Primeros Pasos
Tutorial en: http://diymakers.es/arduinoprocessingprimerospasos/ (http://diymakers.
*/
import processing.serial.*; //Importamos la librera Serial
Serial port; //Nombre del puerto serie
PrintWriter output;
void setup()
{
println(Serial.list()); //Visualiza los puertos serie disponibles en la consola de aba
port = new Serial(this, Serial.list()[1], 9600); //Abre el puerto serie COM3
size(800, 400); //Creamos una ventana de 800 pxeles de anchura por 600 pxeles de alt
}
void draw()
{
background(255,255,255);//Fondo de color blanco
if(mouseX > xquadrquad && mouseX < xquad+rquad && //Si el mouse se encuentra dentro
mouseY > yquadrquad && mouseY < yquad+rquad)
{
overRect=true; //Variable que demuestra que el mouse esta dentro de rect
stroke(255,0,0); //Contorno de rect rojo
}
else
{
overRect=false; //Si el mouse no est dentro de rect, la variable pasa a ser falsa
stroke(0,0,0); //Contorno de rect negro
}
//Dibujamos un rectangulo de color gris
07/06/2016 14:09
8 de 19
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
http://diymakers.es/arduino-processing-primeros-pasos/
fill(red,green,blue);
rectMode(RADIUS); //Esta funcin hace que Width y Height de rect sea el radio (distanc
rect(xquad,yquad,rquad,rquad);
//Creamos un texto de color negro con la palabra LED
fill(0,0,0);
PFont f = loadFont("Calibri48.vlw");//Tipo de fuente
textFont(f, 20);
text(texto, 170, 270);
//Ponemos la imagen de nuestro logo
imageMode(CENTER);//Esta funcin hace que las coordenadas de la imagne sean el centro
PImage imagen=loadImage("logo.jpg");
image(imagen,xlogo,ylogo,200,100);
//Recibir datos temperatura del Arduino
if(port.available() > 0) // si hay algn dato disponible en el puerto
{
valor=port.read();//Lee el dato y lo almacena en la variable "valor"
}
//Visualizamos la temperatura con un texto
text("Temperatura =",390,200);
text(valor, 520, 200);
text("C",547,200);
07/06/2016 14:09
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
http://diymakers.es/arduino-processing-primeros-pasos/
blue=100;
texto="LED OFF";
}
}
}
void keyPressed() //Cuando se pulsa una tecla
{
if(key=='w'||key=='W')
{
ylogo; //El logo se deplaza hacia arriba
}
else if(key=='s'||key=='S')
{
ylogo++; //El logo se deplaza hacia abajo
}
else if(key=='a'||key=='A')
{
xlogo; //El logo se desplaza hacia la izquierda
}
else if(key=='d'||key=='D')
{
xlogo++; //El logo se desplaca hacia la derecha
}
//Pulsar la tecla E para salir del programa
if(key=='e' || key=='E')
{
output.flush(); // Escribe los datos restantes en el archivo
output.close(); // Final del archivo
exit();//Salimos del programa
}
}
-Hay que cambiar el ndice de Serial.list()[1] por el ndice correspondiente al puerto serie que est conectado el Arduino. En la consola de abajo se pude ver el ndice una vez iniciado el entorno grco.
output=createWriter(temperatura_datos.txt); es el archivo de texto donde se guardan los datos de la
temperatura. Se guarda dentro de la misma carpeta donde se guarda el cdigo de Processing. El no
mbre entre comillas es el nombre del archivo y se puede poner cualquiera.
-Esta parte sirve para detectar cuando el mouse se encuentra dentro del botn para cambiar el estado del led. Se tiene que ajustar las coordenadas exactas de toda la supercie del rectngulo. Tenem
os que el centro del rectngulo est en la posicin (200,200), si le restamos el radio del rectngulo (q
ue es 40 pxeles) tendremos el lmite izquierdo y lmite inferior del rectngulo. Y si le sumamos el rad
io, tendremos el lmite derecho y lmite superior.
9 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
PFont f=loadFont(Calibri-48.vlw); Con esta funcin podemos poner el tipo de fuente para el texto. T
enemos que ir a Tools, Create Font, seleccionar la fuente deseada, pulsar Ok, y Processing crear un
a carpeta llamada data dentro de la carpeta del cdigo donde guardar el tipo de fuente. Luego ten
emos que poner el nombre del tipo de fuente que hemos seleccionado dentro de las comillas de la f
uncin.
PImage imagen=loadImage(logo.jpg); Sirve para cargar una imagen en el entorno grco. Dicha im
agen tenemos que guardarla dentro de la carpeta data. Entre comillas hay que poner el nombre de l
a imagen. La siguiente lnea sirve para determinar la posicin de la imagen y las dimensiones.
-Esta parte sirve para calibrar el valor de la temperatura para visualizarla en forma de color con la g
ura ellipse. Primero de todo tenemos que establecer el rango de temperatura que queremos, en nue
stro caso vamos desde 15C de mnima hasta 32C de mxima. Mapeamos estos valores en un rang
o de 0 a 255 que es el rango necesario para los valores del color RGB. Una vez esto, tenemos que h
acer que el color pase de una tonalidad azul-gris cuando la temperatura es mnima, hasta una tonalidad roja cuando la temperatura es mxima. Si nos jamos en los colores RGB, vemos que para pasa
r de una tonalidad a otra, el color Red va invertido respecto a los colores Green y Blue. Por esto, ten
emos que invertir los valores de Green y Blue y restarlos con 255.
10 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
-Cuando nalizamos el entorno grco pulsando la tecla E, el archivo de texto donde se guardan lo
s valores de temperatura del sensor naliza. Si lo abrimos nos aparecer lo siguiente.
11 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
(http://www.facebook.com/sharer.php?u=http://diymakers.es/arduino-processing-primeros-pasos/)0
(http://twitter.com/share?url=http://diymakers.es/arduino-processing-primeros-pasos/&text=ARDUINO
+%2B+PROCESSING%3A+PRIMEROS+PASOS+)
rduino-processing-primeros-pasos/)0
(https://plus.google.com/share?url=http://diymakers.es/a
(http://www.linkedin.com/shareArticle?mini=true&url=http://diym
akers.es/arduino-processing-primeros-pasos/)0
ASOS&body=%20http://diymakers.es/arduino-processing-primeros-pasos/)
12 de 19
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
Muy bueno el tutorial. Muy completo. El nico defecto que hay es que se cortan las palab
ras cuando se cambia de linea.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=34#respond)
Gracias pionner123. El problema con las palabras que se cortan es por culpa del Fir
efox. En el Chrome no pasa.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=35#respond)
13 de 19
hola buenas. Muy buen tutorial me ayudara bastante en un proyecto que tengo que hace
r. hay una duda que tengo que no he podido aclarar. Cual es la accin (codigo) que se le i
ndica a processing para decir que hemos precionado el botn. Lo que quiero hacer, es qu
e al precionar el boton este cambie de color y al soltar el botn vuelva a su color original(
independiente de si el curso an esta dentro del botn). Espero que me haya explicado bi
en. Saludos estimado.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=292#respond)
07/06/2016 14:09
14 de 19
http://diymakers.es/arduino-processing-primeros-pasos/
07/06/2016 14:09
15 de 19
http://diymakers.es/arduino-processing-primeros-pasos/
Esta intruccin es para abrir el puerto en el que est conectado nuestro Arduino. El
primer puerto es el [0], el segundo el [1], el tercero el [2] el autor del proyeto tiene
conectado el COM3 en el segundo puerto [1]. Tu caso puede ser diferente. p.e. en
mi caso tengo la placa de arduino en el COM13 que es el primer puerto. Por lo tant
o escribo: port = new Serial(this, Serial.list()[0], 9600); //Abre el puerto serie COM13
)
Tienes dos opciones para solucionarlo, la primera es hacer que processing te de la l
ista de uso de puertos que lo puedes hacer con el siguiente sketch:
/*
* Test de Puertos utilizados
*/
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
void setup() {
size(200, 200);
noLoop(); // Fuerza a no realizar el bucle del programa
println(Arduino.list()); // Imprime la lista de puertos COM
}
void draw() {
}
Una vez ejecutado te dar los puertos. Por ejemplo [0] COM7 , [1] COM 11 y [2] CO
M 13. Metindote en el editor de arduino en la esquina inferiror izquierda vers en
que puerto est conectada la placa y sabrs que escribir en el sketch de processing.
La otra opcin es tantear.
Hay otro problema por el que puede que no logres la conexin. Es por no tener corr
ectamente instalada la librera RXTX dentro de processing/java/bin, tanto rxtxParall
el.dll como rxtxSerial.dll. Estas librerias las puedes descargar, si no lo has hecho tod
ava, desde http://rxtx.qbang.org/wiki/index.php/Download (http://rxtx.qbang.org/w
iki/index.php/Download). En mi caso he instalado para processing 2.2.1 bajo Windo
ws la rxtx 2.0-7pre2 (stable) -win32 (incomplete)Por ltimo, para completar. No olvides instalar la librera de arduino para processin
g (y rmata). Se intala por supuesto como cualquier librera de arduino y est en htt
p://playground.arduino.cc/interfacing/processing (http://playground.arduino.cc/inte
rfacing/processing). Instala la de la versin de processing que tengas.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=371#respond)
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
Estoy con un proyecto donde necesito ver grcamente dos seales analgicas de Arduin
o para compararlas, sabeis si existe algun ejemplo ya hecho.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=342#respond)
16 de 19
07/06/2016 14:09
17 de 19
http://diymakers.es/arduino-processing-primeros-pasos/
Hola, muy buen proyecto, podrs explicarme que es el tipo de fuente y el Logo esta hech
o con programacin o es un diseo grco guardado en ese archivo? con que funcin podra agregarle un beep o sonido en la PC como una alarma cuando pase de cierta temper
atura. Gracias amigo.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=352#respond)
Buenas.
Quisiera saber como hacer para mostrar la misma hora del archivo txt en la interfaz de pr
ocessing. es decir que muestre tanto en pantalla como en el archivo la hora en que se gu
arde la temperatura.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=414#respond)
que buena forma de aprender ojala sigan publicando proyectos como este
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=439#respond)
ola buenas noche buen tutorial me podra por favor decir como podra mostrar dos valor
es de temperatura
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=440#respond)
Hola, gran trabajo, necesito hacer solo la lectura de la termocupla con el dibujor el circulo
, pordrias resaltar esta parte, muy agradecido
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=463#respond)
18 de 19
Hola. Excelente tutorial. Hace un par de semanas que espes con arduino y ahora veo la
posibilidad de interfaz grca con la PC. Buensimo.
Saludos.
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=476#respond)
Hola. Estoy haciendo mi tesis sobre arte generativo en Processing y pienso usar sensores
de movimiento y presin y mi duda es si tengo que usar la interfaz de Arduino para pode
r aplicarlos, aunque creo que lo obvio es que s. Saludos
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=502#respond)
se puede hacer que desde la matricial de numero del arduino pueda escribir en word o e
n facebook en mi compu, algo asi como convertir mi arduino en un teclado para la compu
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=512#respond)
Hola ricardo. Sobre usar sensores de movimiento y presin no te hace falta el hardware d
07/06/2016 14:09
http://diymakers.es/arduino-processing-primeros-pasos/
e Arduino ya que podras simular esos movimientos (x,y, o incluso z) y la presin que es un solo val
or. Cmo lo haras? .bien simplemente usando variables aleatorias. Yo no he mirado si processing
tiene ese tipo de variables que se suelen llamar random. A cada valor que quieras simular se le asi
gnara una variable de ese tipo que suele ser tan grande como la maxima capacidad de el tipo de d
atos que use esa variable. Ejemplo un bit (no un byte que es diferente) tiene dos posibilidades 0 y 1
,,,true false etc entonces esa variable random usando ese tipo de datos estara variando su valor
entre cero o uno aleatoriamente,,,,si le asignaras un tipo de datos por ejemplo de byte que son 10 b
its creo pues tendras 1024 posibilidades desde el numero 0 hasta el numero 1023 siempre y cuand
o sea positivo el tipo de datos, en caso de positivo y negativo se repartira a partes iguales desde -5
12 hasta +511. Si la variable en cuestin es muy grande para tus valores lo que podras hacer es m
apearlo que es lo que se ha realizado aqu con la temperatura ( una simple regla de tres). Al valor m
ximo que tu quieras tener en tu coordenada X le asignaras 1023 y al mnimo 0.
Bueno lo importante es buscar si processing tiene esa variable random para utilizarla (99,99% si) y
despus aplicar la lgica sobre esa variable en funcin de lo que quieras simula. Evidentemente en
el proyecto indicaras que se trata de una simulacin para abaratar costes ya que tu objetivo no es
el hardware sino el proceso grco.
Un Saludo
Responder (http://diymakers.es/arduino-processing-primeros-pasos/?replytocom=513#respond)
19 de 19
Deja un comentario
(http://creativecommons.org/licenses/by-nc-sa/4.0/)
Buscar
07/06/2016 14:09