Anda di halaman 1dari 5

Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces grficas

Sesin #5
(9 de octubre del 2015)
Teniendo ya todo el bagaje correspondiente al manejo de Processing y sus diferentes funciones,
enfocadas al desarrollo de interfaces grficas; podemos ya ingresar en la siguiente fase del curso, que
es la adhesin de Arduino con Processing. En este punto ya somos capaces de orientar nuestras
aplicaciones a la parte fsica o de hardware. Para ello se debe contar con una placa Arduino (cualquier
distribucin) y las libreras. Comenzaremos con la instalacin de la librera:
Opcin 1: descargar la librera de la pgina http://playground.arduino.cc/Interfacing/Processing y
copiar la carpeta arduino dentro de la carpeta de sketchbook que genera de forma predeterminada
Processing al ser ejecutado (normalmente se encuentra en mis documentos).
Opcin 2: desde el software de Processing, ir a la pestaa Herramientas, all ingresamos al men y al
final nos dice Aadir Herramienta, inmediatamente nos abre la siguiente ventana (vara
dependiendo de la versin):

Vamos a la ventana de Libraries, all buscamos la librera que se llama Arduino (Firmata) y la
instalamos, reiniciamos Processing y verificamos que haya quedado instalada viendo si los ejemplos
de Arduino firmata estn en processing, para ello vamos a Archivo/ Ejemplos y en la ventana
buscamos bibliotecas/Arduino(firmata), si aparece esto ya estamos listos para usar Arduino con
Processing (Pueden observar los ejemplos que ofrece Processing para empezar con el uso de Arduino).
Jaime Andrs Riascos Salas
jandresrsalas@gmail.com

Ingeniera Mecatrnica
Instituto Tecnolgico Metropolitano (ITM)

Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces grficas


Para usar la placa y poder programarla con Processing debemos cargar un programa predeterminado
en nuestra board, este programa se encuentra en el IDLE de arduino con la siguiente direccin:
Archivo/ejemplos/Firmata/Standard Fimata. Les debe aparecer el siguiente programa.

Cargamos este programa, muy importante revisar en Herramientas/puerto/ el nombre del puerto en
donde aparece nuestro placa, en windows son COM1, COM2, COM3 COMn y en linux aparecen
/dev/ACM0, /dev/ACM1, /dev/ACM2, etc. Esto es esencial para cuando estemos programando en
Processing. Ya teniendo el programa StandardFirmata en nuestra placa procedemos a abrir Processing
y necesitamos, para la comunicacin con Arduino, las siguientes lneas de cdigo:
import processing.serial.*: la librera de comunicacin serial de Processing, este tipo de comunicacin
se usa para conectarse con Arduino
import cc.arduino.*: es la librera predeterminada de Arduino para Processing, es la que cargamos en
la carpeta de sketchbook.

Jaime Andrs Riascos Salas


jandresrsalas@gmail.com

Ingeniera Mecatrnica
Instituto Tecnolgico Metropolitano (ITM)

Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces grficas


Arduino arduino: esta lnea establece todas las funciones de la librera de Arduino para Processing, las
cuales sern llamadas con la lnea arduino.(nombre funcin del software Arduino)
Ya en la parte del setup(), debemos inicializar la comunicacin, para ello usamos la siguiente lnea:
Ejemplo 1:
arduino = new Arduino(this, Arduino.list()[0], 57600): esta lnea crea la comunicacin con la placa, la
primera sentencia es la creacin de la comunicacin, la segunda sentencia es el puerto en que se
conect la placa (COMn o dev/ACMn) y la ltima es la velocidad de comunicacin en baudios
(bits/s).
Con estas lneas ya podemos proceder a ejecutar nuestro primer cdigo:
Ejemplo 1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

// Cdigo prende y apaga el led de la placa (salida 13) cuando se presione el


botn del mouse (derecho enciende, izquierdo apaga).
import processing.serial.*; // llamada a la librera serial de Processing
import cc.arduino.*; //importa la librera de Arduino para Processing
Arduino arduino; // Llamada de las funciones con la sentencia arduino.
void setup() {
size(200, 200);
arduino = new Arduino(this, Arduino.list()[0], 57600); //Creacin de la comunicacin con Arduino
}
void draw() {
}
void mouseClicked() {
if (mouseButton == LEFT) { // Si presionan el botn izquierdo del mouse
arduino.digitalWrite(13, Arduino.HIGH); //Escribir en la salida digital #13 el valor alto
}
if (mouseButton == RIGHT) { //Si presionan el botn derecho del mouse
arduino.digitalWrite(13, Arduino.LOW);//Escribir en la salida digital #13 el valor bajo
}
}
Como se observ, la programacin del Arduino en Processing no cambia con respecto al IDLE de
Arduino, Processing reconoce muchas de las funciones que se encuentran por defecto en el software de
programacin de Arduino. Entre otras funciones, las siguientes son algunas de las ms elementales.
Arduino.list(): retorna la lista de componentes disponibles en el puerto serial. Cuando se conecta la
Jaime Andrs Riascos Salas
jandresrsalas@gmail.com

Ingeniera Mecatrnica
Instituto Tecnolgico Metropolitano (ITM)

Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces grficas


placa y esta funcin es llamada, entrega el puerto en que se encuentra conectado.
pinMode(pin, modo): configura las entradas o salidas digitales de los puertos, pin se refiere al nmero
del puerto y el mode se refiere al tipo de funcionamiento que llevar dicho puerto, sea entrada, salida o
servo, para ello se nombran as: Arduino.INPUT, Arduino.OUTPUT y Arduino.SERVO
respectivamente.
digitalRead(pin): lee el valor digital del pin establecido, ya sea un alto o un bajo.
digitalWrite(pin, value): escribe el valor digital al pin establecido, esto dato ser un bajo o un alto
(booleano), y se escribe: Arduino.LOW o Arduino.HIGH.
analogRead(pin): retorna el valor anlogo de la entrada establecida (pin), esta dato va desde 0 hasta
1023 (8bits).
analogWrite(pin, value): escribe el valor anlogo (PWM) en el pin digital establecido (los pines que
soportan esta congiguracin son: 3, 5, 6, 9, 10 y 11) el dato analogo puede ir desde 0 (apagado) hasta
255 (encendido).
servoWrite(pin, value): escribe el valor al pin del servo motor, esto valor puede ir desde 0 a 180 y
equivale al ngulo de rotacin.
En el siguiente ejemplo retomamos un ejemplo anterior (potencimetro) para controlar la intensidad de
un bombillo led conectado a una salida anloga del Arduino.
Ejemplo 2:

Jaime Andrs Riascos Salas


jandresrsalas@gmail.com

Ingeniera Mecatrnica
Instituto Tecnolgico Metropolitano (ITM)

Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces grficas


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

// Cdigo que prende


import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
float x1; //Inicializacin de variable float para funcin map()
int x=20;//Variable
potencimetro

para

posicin

inicial

de

la

lnea

variable

del

int a; //variable int para el dato anlogo


void setup() {
size(200, 200);
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode(10, Arduino.OUTPUT); //Asignar el pin 10 como salida
}
void draw() {
background(200);
fill(255);
rect(20, 50, 60, 30);
line(x, 45, x, 85);
x1 = map(x, 20, 80, 0, 255);
fill(x1);
ellipse(100, 20, 20, 20);
textSize(20);
fill(255, 0, 0);
text(int(x1), 20, 100);
a = int(x1); //Asignar el valor de la variable a la salida anloga
arduino.analogWrite(10, a); //escribir dicha variable en la salida anlogo
println(a); //Visualizar en la consola el dato anlogo de la variable.
}
void mouseDragged() {
if (mouseX >= 20 && mouseX <= 80 && mouseY < 80 && mouseY > 50) {
x = mouseX;
}
}
Tarea: Realizar un potencimetro que me prenda una alarma (encender un botn) o indique un
mensaje cuando se est escribiendo cierto dato anlogo, hacerlo para diferentes rangos.
Referencias:
https://processing.org/reference/
http://playground.arduino.cc/Interfacing/Processing

Jaime Andrs Riascos Salas


jandresrsalas@gmail.com

Ingeniera Mecatrnica
Instituto Tecnolgico Metropolitano (ITM)

Anda mungkin juga menyukai