0% encontró este documento útil (0 votos)
125 vistas51 páginas

Qué es Processing y su uso en interfaces

Este documento describe el lenguaje de programación Processing y cómo puede usarse para diseñar interfaces gráficas. Processing permite crear imágenes, animaciones y medios interactivos. Se explican conceptos básicos como las funciones setup() y draw(), cómo mostrar texto, detectar eventos del mouse y teclado, y dibujar formas geométricas simples como líneas, rectángulos y elipses. También se detalla cómo comunicar programas de Processing con la tarjeta de desarrollo Galileo.

Cargado por

rubenutn
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
125 vistas51 páginas

Qué es Processing y su uso en interfaces

Este documento describe el lenguaje de programación Processing y cómo puede usarse para diseñar interfaces gráficas. Processing permite crear imágenes, animaciones y medios interactivos. Se explican conceptos básicos como las funciones setup() y draw(), cómo mostrar texto, detectar eventos del mouse y teclado, y dibujar formas geométricas simples como líneas, rectángulos y elipses. También se detalla cómo comunicar programas de Processing con la tarjeta de desarrollo Galileo.

Cargado por

rubenutn
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Processing: Diseo de Interfaces

Processing: Diseo de Interfaces


Qu es Processing?

Comenzando con Processing

Mostrando Texto

Eventos del Mouse y del Teclado

Comunicando Galileo con Processing

Comunicando Processing con Galileo

Qu es
Processing?
Processing:

Es un lenguaje de programacin y un entorno


de desarrollo de software con una curva de
aprendizaje rpida, con el que se pueden
disear interfaces grficas para monitorear y
controlar distintas tareas. Es un buen
complemento para la tarjeta de desarrollo
Galileo.

Descarga gratuita ya que es un


Programa de Cdigo Abierto.

Se puede ejecutar en Linux,Mac OS


X y Windows.

Mas de 100 bibliotecas que extienden


las capacidades del software.

Se puede combinar programacin de


Processing con Java puro.

IDE
Processing

Ejecutar

Parar

Nuevo

Abrir Guardar

Exportar

Nombre del proyecto (sketch)


Cdigo
Seleccin de otros Lenguajes
de programacin
Nmero
de Lnea
rea de
mensajes

rea de texto
y depuracin

Comenzando
con Processing
El entorno de programacin de
Processing permite la creacin de
imgenes, animaciones y medios de
interaccin.
Comenzaremos con algunos conceptos
bsicos y figuras simples que mas
adelante nos permitirn disear
interfaces mas complejas.

Funciones Bsicas

Figuras Bsicas

Agregando color
Descarga: [Link]

Funciones
Bsicas
Processing, al igual que Arduino tiene dos funciones bsicas:
setup( )
draw( )
La funcin setup( ) se ejecuta una sola vez al inicio del programa.
La funcin draw( ) hace las veces de la funcin loop( ) de Arduino,
la cual se ejecuta repetitivamente mientras el programa se encuentre
ejecutndose.
Otras dos funciones bsicas que necesitaremos son:

size( )
background( )

size( )
background( )
size( )

Define la dimensin de la ventana


de la interfaz en pixeles. Esta
funcin debe ser la primer lnea de
cdigo dentro de la funcin setup( )
Sintaxis:

size(w, h)
w -> ancho de la ventana (int)
h -> alto de la ventana (int)

background( )
Establece el color usado para el fondo
de la ventana de la interfaz. El fondo
predeterminado es de color gris claro.
Sintaxis:
background(grayscale)
background(R,G,B)
background(rgb)

rgb -> Codificacin hexadecimal


#FFFFFF -> Blanco

Cdigo

Origen
(0,0)

[Link]
void setup(){
size(500,500);
}
Crea una ventana de
500x500 pixeles

void draw(){
}

Cdigo

[Link]
Crea una ventana de
500x500 pixeles

Fondo de la ventana
Color: Azul Intel
RGB: 0, 113, 197

void setup(){
size(500,500);
background(#0071c5);
}
void draw(){
}

Figuras
Bsicas
En Processing podemos comenzar nuestros dibujos con formas muy
bsicas como lneas, elipses y cuadrilteros con las siguientes funciones::

line( )

rect( )

ellipse( )

Dibuja una lnea en la pantalla


entre dos puntos indicados. La
lnea dibujada tiene un grosor de
1 pixel y color negro por defecto

Dibuja un rectngulo en la pantalla.


Las primeras dos coordenadas
corresponden a la esquina superior
izquierda, la tercera es el ancho y la
cuarta la altura.

Dibuja una elipse en la pantalla.


Las primeras dos coordenadas
corresponden al centro de la
elipse, la tercera y la cuarta al
ancho y la altura respectivamente.

Sintaxis:

Sintaxis:

Sintaxis:
line(x1,y1,x2,y2)
rect(x1,y1,w,h)

ellipse(x,y,w,h)

Cdigo

[Link]
void setup(){
size(500,500);
background(#0071c5);
}
void draw(){
line(50,50,200,200);
rect(300,200,100,100);
ellipse(100,400,100,100);
}

Processing
Language
Reference
El lenguaje Processing es diseado con la finalidad de proporcionar
una forma rpida para el diseo de prototipos de software, con el
cual podemos crear desde formas muy bsicas, hasta estructuras
visuales muy sofisticadas.
Al igual que Arduino, Processing nos proporciona un amplio
compendio de Referencia de su lenguaje, donde podemos encontrar
la explicacin, sintaxis y ejemplos de todas las funciones
implementadas nativamente en su IDE y de algunas bibliotecas que
tambin vienen incorporadas en l.

[Link]

Agregando
Color

noFill()

noStroke()

Podemos especificar el color del relleno de las figuras y de su contorno, as


como el grosor de ste:

fill( )

stroke( )

strokeWeight( )

Configura el color del relleno de


las figuras. El color por default de
las figuras es el blanco.

Configura el color de las lneas y de


los contornos de las figuras.

Configura el grosor de las lneas y


de los contornos de las figuras. El
valor es expresado en pixeles.

Sintaxis:
Sintaxis:

Sintaxis:
stroke(grayscale)
stroke(R,G,B)
stroke(rgb)

fill(grayscale)
fill(R,G,B)
fill(rgb)

Codificacin hexadecimal

strokeWeight(weight)

Cdigo

[Link]
void setup(){
size(500,500);
background(#0071c5);
}

void draw(){
fill(255,0,0);
stroke(0,255,0);
strokeWeight(3);
line(50,50,200,200);
stroke(255,255,255);
rect(300,200,100,100);
fill(#009383);
ellipse(100,400,100,100);
}

Reto:

Mostrando
Texto
Adems de crear figuras, tambin podemos agregar texto a nuestras interfaces, lo cual nos
permitir agregar leyendas, instrucciones, sugerencias, comentarios, etc.
Igualmente podemos darle formato a este texto, como por ejemplo, modificar el tamao, el
color, su posicin, la fuente tipogrfica, entre otros atributos.

text()
textSize()
textAlign()

fill()

text()

textSize()

textAlign()

Despliega texto en la pantalla.

Configura el tamao de la fuente.


Se expresa en pixeles.

Configura la alineacin del texto


mostrado en relacin con los
valores de las coordenadas
indicadas en la funcin text(): x, y.

Sintaxis:
Sintaxis:
text(texto,x,y)
text(num,x,y)
x,y -> coordenadas de la esquina
inferior izquierda del texto.
num -> int o float: nmero a mostrar

textSize(tamao)

Sintaxis:
textAlign(alignX)
alignX -> LEFT, CENTER, RIGHT

Cdigo

[Link]
void setup(){
size(500,500);
background(0,113,197);
text("Este es mi primer texto",0,500);
}
void draw(){
}

Cdigo

[Link]
void setup(){
size(500,500);
background(0,113,197);
text("Este es mi primer texto",100,100);
textSize(30);
text("Ahora el tamao es de 30",20,150);
fill(255,255,0);
text("Y ahora con color",50,200);
textAlign(CENTER);
text("Este texto esta centrado",width/2,width/2);
}
void draw(){
}

Eventos
del Mouse
Processing nos proporciona algunas funciones para poder acceder a distintos eventos del
mouse, adems de proporcionarnos informacin sobre la posicin del puntero como su
posicin en X y Y en ciertas variables predefinidas. Con estas funciones y variables
podemos controlar un sinfn de aplicaciones, como por ejemplo, dibujar algo cuando demos
un click en cierto lugar de la ventana.

Acciones
del Mouse
Es importante definir que acciones del mouse puede detectar Processing:

Accin

Descripcin

Clicked

Un botn del mouse es presionado y luego soltado

Pressed

Un botn del mouse es presionado y se mantiene as

Released

Un botn del mouse fue presionado, pero ahora se suelta

Moved

El mouse es movido sin que ningn botn sea presionado

Dragged

El mouse es movido con un botn presionado

Funciones
del Mouse
Las acciones del mouse puede llamar las siguientes funciones y ejecutar el cdigo que nosotros definamos dentro de ellas:

void mouseClicked() {
}
void mousePressed() {
}
void mouseReleased() {
}
void mouseMoved() {

}
void mouseDragged(){
}

Variables
Relacionadas
Tenemos a nuestra disposicin dos variables que Processing nos proporciona en cualquier momento
que las necesitemos a lo largo de nuestro programa y dentro de cualquier funcin, las cuales nos
proporcionan mas informacin acerca de que es lo que el mouse est haciendo dentro de nuestro
programa.
mouseX

Nos proporciona la posicin X del mouse en la ventana

mouseY

Nos proporciona la posicin Y del mouse en la ventana

mousePressed

Variable booleana, TRUE / FALSE

mouseButton

Botn presionado, LEFT, RIGHT, CENTER

void setup() {
size(500, 500);
background(0);
textAlign(CENTER);
textSize(24);
fill(255);
text("El mouse no est haciendo nada",
width/2, height/2);
}
void draw() {
}
void mousePressed() {
background(100, 100, 0);
text("El mouse fue presionado",
width/2, height/2);
if ( mouseButton == LEFT) {
text("y fue el botn izquierdo",
width/2, height/2 + 40);
}
if (mouseButton == RIGHT) {
text("y fue el boton derecho",
width/2, height/2 + 40);
}
}

Cdigo

[Link]
void mouseReleased() {
background(100, 0, 100);
text("el botn fue soltado",
width/2, height/2);
}
void mouseMoved() {
background(150, 10, 70);
text("El mouse fue movido",
width/2, height/2);
}
void mouseDragged() {
background(10, 70, 100);
text("Se est arrastrando el mouse",
width/2, height/2);
}

Reto:
Al dar click derecho

Al soltar
el botn

Al soltar
el botn
Al dar click izquierdo

Eventos
del Teclado
Al igual que los eventos de mouse, es posible tambin detectar distintos eventos del teclado,
lo que nos puede permitir tener mayor interaccin con la tarjeta Galileo. Algunos de las
acciones o eventos que podemos detectar es la presin de alguna tecla, determinar la tecla
presionada, discriminar entre letras maysculas o minsculas, entre otras cosas.

Tecla
Presionada
Processing nos proporciona una funcin que es llamada cada vez que una
tecla es presionada:
void keyPressed(){
}
Dentro de esta funcin podemos colocar todo el cdigo que queremos que
se ejecute cada vez cualquier tecla sea presionada, sin embargo an no
distinguimos especficamente cul tecla se presion.

Cdigo

[Link]
int r,g,b;

void setup(){
size(600,600);
r = 0;
g = 0;
b = 0;
}
void draw(){
background(r,g,b);
}

void keyPressed(){
r = int(random(256));
g = int(random(256));
b = int(random(256));
}

Detectando
la Tecla
Presionada
Como ya vimos, cada que presionamos una tecla, la funcin keyPressed() es llamada. Adems, la
informacin acerca de cul es la tecla presionada es almacenada en una variable llamada key.

void setup(){
}
void draw(){
}
void keyPressed(){
println(key);
}

Cdigo

int r,g,b;
void setup(){
size(600,600);
r = 0;
g = 0;
b = 0;
}
void draw(){
background(r,g,b);
}

void keyPressed(){
switch (key){
case 'r':
r=255;
g=0;
b=0;
break;
case 'g':
r=0;
g=255;
b=0;
break;
case 'b':
r=0;
g=0;
b=255;
break;
default:
break;
}
}

[Link]

Detectando
otras Teclas
En el primer ejemplo de esta seccin, pudimos darnos cuenta que hay algunas teclas que no pudimos
identificar, y simplemente se imprime un signo ?. Ahora, en el segundo ejemplo imaginemos que
queremos detectar cuando las flechas sean presionadas, cmo podemos escribir una tecla de estas
dentro de las comillas?
Para esto, Processing tambin tiene a nuestra disposicin la variable keyCode la cual almacena el
nmero ASCII asociado a cada una de estas teclas:
38

void keyPressed(){
println(keyCode);
}

37

39

40

Cdigo

int r,g,b;
void setup(){
size(600,600);
r = 0;
g = 0;
b = 0;
}
void draw(){
background(r,g,b);
}

void keyPressed(){
switch (keyCode){
case 37:
r=255;
g=0;
Reemplaza con: LEFT
b=255;
break;
case 38:
r=255;
g=255;
Reemplaza con UP
b=0;
break;
case 39:
r=0;
g=255;
Reemplaza con RIGHT
b=255;
break;
default:
break;
}
}

[Link]

Comunicando
Galileo con
Processing
Para esta primer interaccin entre ambas plataformas Hardware/Software, enviaremos datos
utilizando comunicacin serial, desde la tarjeta Galileo hasta la interfaz de Processing, es decir,
realizaremos en tipo de hola mundo.
Lo primero que necesitamos sabes es cmo leer informacin del puerto serial.

Cmo leer

Datos Seriales
Lo primero es importar la biblioteca serial para tener acceso al
puerto serial de la computadora para enviar y transmitir datos entre
Processing y hardware externo:

Cdigo

[Link]
import [Link].*;
Serial miPuerto;

void setup(){
miPuerto = new Serial(this,"COM5",9600);
}
void draw(){
if ([Link]() > 0){
int dato = [Link]();
println(dato);
}
void draw(){
}
}
void serialEvent(Serial miPuerto){
int dato = [Link]();
println(dato);
}

Comunicando
Galileo con
Processing
Para este primer ejemplo lo que haremos ser enviar la informacin del estado de un push
button conectado a la tarjeta Galileo, a una interfaz diseada en Processing:

Esquemtico

NOTA: Aunque este es el diagrama de


conexin para este ejercicio, usaremos
el botn A del Joystick:

Galileo

Cdigo

[Link]
void setup() {
pinMode(2, INPUT); // Configuracin del pin 2 como entrada
[Link](9600); //Inicializacin de comunicacin serial a 9600 baudios
}
void loop() {
// Transfiere a travs del puerto serial el estado digital del pin 2
[Link](digitalRead(2));
delay(100); //retardo de 100 milisegundos
}

Reto:

Para visitar un tutorial completo sobre este ejercicio da click aqu:


Tutorial: Comunicando Galileo con Processing - PARTE 1

Comunicando
Processing
con Galileo
Ahora enviaremos datos a la tarjeta Galileo desde una interfaz diseada en Processing para controlar
una tarea, que para este caso se controlar el encendido y apagado de un LED.
Para este ejercicio necesitamos saber cmo escribir al puerto serial, para que los datos sean
transmitidos haca la Galileo.

Comunicando
Processing
con Galileo
La interfaz de Processing contar con un botn virtual, el cual al dar click derecho sobre
ste, transmitir serialmente un dato que le informar a la tarjeta Galileo que deber de
encender un LED y si se da click izquierdo, deber apagarlo:

Galileo

Cdigo

LED_on_off.ino
int byteRecibido=0;
const int led = 13;

//Variable que almacenar el byte recibido


//Pin al que se conectar el LED

void setup(){
[Link](9600);
//Inicializacin del puerto serial a 9600 baudios
pinMode(led, OUTPUT); //Se declara el pin 13 como salida
digitalWrite(led, LOW);//Apagar el LED inicialmente
}

void loop(){
//Se comprueba si hay algn dato por leer en el buffer del puerto serial
if ([Link]() > 0){
byteRecibido=[Link](); //Lectura del dato recibido
if (byteRecibido==A)
//Comprobar que el dato recibido sea una "A"
digitalWrite(led, HIGH); //Encender el LED
else if (byteRecibido==B)
digitalWrite(led, LOW); //Apagar el LED
}
}

Reto:
Al dar click derecho

Al soltar
el botn

Al soltar
el botn
Al dar click izquierdo

Para visitar un tutorial completo


sobre este ejercicio da click aqu:
Tutorial: Comunicando Galileo con
Processing - PARTE 2

Este tutorial es liberado bajo la licencia:


Parte de su contenido fue obtenido de [Link]

También podría gustarte