Sesión5

5
“Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces gráficas” Sesión #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 gráficas; podemos ya ingresar en la siguiente fase del curso, que es la adhesión de Arduino con Processing. En este punto ya somos capaces de orientar nuestras aplicaciones a la parte sica o de hardware. Para ello se debe contar con una placa Arduino (cualquier distribución) y las librerías. Comenzaremos con la instalación de la librería: Opción 1: descargar la librería de la página hp://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). Opción 2: desde el soſtware de Processing, ir a la pestaña Herramientas, allí ingresamos al menú y al final nos dice “Añadir Herramienta”, inmediatamente nos abre la siguiente ventana (varía dependiendo de la versión): Vamos a la ventana de “Libraries”, allí buscamos la librería que se llama Arduino (Firmata) y la instalamos, reiniciamos Processing y verificamos que haya quedado instalada viendo si los ejemplos de Arduino firmata están 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 Andrés Riascos Salas Ingeniería Mecatrónica [email protected] Instituto Tecnológico Metropolitano (ITM)

description

Arduino + Processing Tutorial

Transcript of Sesión5

Page 1: Sesión5

“Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces gráficas”

Sesión #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 gráficas; podemos ya ingresar en la siguiente fase del curso, quees la adhesión de Arduino con Processing. En este punto ya somos capaces de orientar nuestrasaplicaciones a la parte física o de hardware. Para ello se debe contar con una placa Arduino (cualquierdistribución) y las librerías. Comenzaremos con la instalación de la librería:

Opción 1: descargar la librería de la página http://playground.arduino.cc/Interfacing/Processing ycopiar la carpeta arduino dentro de la carpeta de sketchbook que genera de forma predeterminadaProcessing al ser ejecutado (normalmente se encuentra en mis documentos).

Opción 2: desde el software de Processing, ir a la pestaña Herramientas, allí ingresamos al menú y alfinal nos dice “Añadir Herramienta”, inmediatamente nos abre la siguiente ventana (varíadependiendo de la versión):

Vamos a la ventana de “Libraries”, allí buscamos la librería que se llama Arduino (Firmata) y lainstalamos, reiniciamos Processing y verificamos que haya quedado instalada viendo si los ejemplosde Arduino firmata están en processing, para ello vamos a Archivo/ Ejemplos y en la ventanabuscamos bibliotecas/Arduino(firmata), si aparece esto ya estamos listos para usar Arduino conProcessing (Pueden observar los ejemplos que ofrece Processing para empezar con el uso de Arduino).

Jaime Andrés Riascos Salas Ingeniería Mecatró[email protected] Instituto Tecnológico Metropolitano (ITM)

Page 2: Sesión5

“Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces gráficas”

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

Cargamos este programa, muy importante revisar en Herramientas/puerto/ el nombre del puerto endonde 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 enProcessing. Ya teniendo el programa StandardFirmata en nuestra placa procedemos a abrir Processingy necesitamos, para la comunicación con Arduino, las siguientes líneas de código:

import processing.serial.*: la librería de comunicación serial de Processing, este tipo de comunicaciónse usa para conectarse con Arduino

import cc.arduino.*: es la librería predeterminada de Arduino para Processing, es la que cargamos enla carpeta de sketchbook.

Jaime Andrés Riascos Salas Ingeniería Mecatró[email protected] Instituto Tecnológico Metropolitano (ITM)

Page 3: Sesión5

“Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces gráficas”

Arduino arduino: esta línea establece todas las funciones de la librería de Arduino para Processing, lascuales serán llamadas con la línea arduino.(nombre función del software Arduino)

Ya en la parte del setup(), debemos inicializar la comunicación, para ello usamos la siguiente línea:

Ejemplo 1:

arduino = new Arduino(this, Arduino.list()[0], 57600): esta línea crea la comunicación con la placa, laprimera sentencia es la creación de la comunicación, la segunda sentencia es el puerto en que seconectó la placa (“COMn” o “dev/ACMn) y la última es la velocidad de comunicación en baudios(bits/s).

Con estas líneas ya podemos proceder a ejecutar nuestro primer código:

Ejemplo 1:

1234567891011121314151617

// Código prende y apaga el led de la placa (salida 13) cuando se presione el botón del mouse (derecho enciende, izquierdo apaga).import processing.serial.*; // llamada a la librería serial de Processingimport cc.arduino.*; //importa la librería de Arduino para ProcessingArduino arduino; // Llamada de las funciones con la sentencia arduino.void setup() { size(200, 200); arduino = new Arduino(this, Arduino.list()[0], 57600); //Creación de la comunicación con Arduino}void draw() {}void mouseClicked() { if (mouseButton == LEFT) { // Si presionan el botón izquierdo del mouse arduino.digitalWrite(13, Arduino.HIGH); //Escribir en la salida digital #13 el valor alto } if (mouseButton == RIGHT) { //Si presionan el botón derecho del mouse arduino.digitalWrite(13, Arduino.LOW);//Escribir en la salida digital #13 el valor bajo }}

Como se observó, la programación 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 programación de Arduino. Entre otras funciones, las siguientes son algunas de las más elementales.

Arduino.list(): retorna la lista de componentes disponibles en el puerto serial. Cuando se conecta la

Jaime Andrés Riascos Salas Ingeniería Mecatró[email protected] Instituto Tecnológico Metropolitano (ITM)

Page 4: Sesión5

“Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces gráficas”

placa y esta función 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 número 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 análogo de la entrada establecida (pin), esta dato va desde 0 hasta 1023 (8bits).

analogWrite(pin, value): escribe el valor análogo (PWM) en el pin digital establecido (los pines que soportan esta congiguración 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 rotación.

En el siguiente ejemplo retomamos un ejemplo anterior (potenciómetro) para controlar la intensidad de un bombillo led conectado a una salida análoga del Arduino.

Ejemplo 2:

Jaime Andrés Riascos Salas Ingeniería Mecatró[email protected] Instituto Tecnológico Metropolitano (ITM)

Page 5: Sesión5

“Aplicaciones con Hardware y Software Libre orientadas al desarrollo de interfaces gráficas”

123456789101112131415161718192021222324252627282930

// Código que prendeimport processing.serial.*;import cc.arduino.*;Arduino arduino;float x1; //Inicialización de variable float para función map()

int x=20;//Variable para posición inicial de la línea variable delpotenciómetro

int a; //variable int para el dato análogovoid 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 análoga arduino.analogWrite(10, a); //escribir dicha variable en la salida análogo println(a); //Visualizar en la consola el dato análogo de la variable.}void mouseDragged() { if (mouseX >= 20 && mouseX <= 80 && mouseY < 80 && mouseY > 50) { x = mouseX; }}

Tarea: Realizar un potenciómetro que me prenda una alarma (encender un botón) o indique unmensaje cuando se esté escribiendo cierto dato análogo, hacerlo para diferentes rangos.

Referencias:

https://processing.org/reference/http://playground.arduino.cc/Interfacing/Processing

Jaime Andrés Riascos Salas Ingeniería Mecatró[email protected] Instituto Tecnológico Metropolitano (ITM)