e/s: processing & arduino - aeiua.files.wordpress.com · 0. introducción • processing. •...

28
E/S: Processing & Arduino Marco Pérez Hernández

Upload: dangkiet

Post on 18-Jul-2018

238 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

E/S:Processing & Arduino

Marco Pérez Hernández

Page 2: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

CONTEXTUALIZACIÓN

Desarrollo de Aplicaciones Multiplataforma

0485 Programación

256 horas

Lectura y escritura de información

Page 3: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

0. Introducción

• Processing.

• Arduino.

• Podemos utilizar ambos para hacer que “hablen”, por ejemplo

para mostrar o guardar datos enviados de uno al otro.

• Arduino viene con algunos ejemplos básicos para comunicarse

con Processing.

Page 4: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

1. Objetivos de la clase

• Enviar datos desde Arduino a Processing a través del puerto serie.

• Recibir los datos enviados desde Arduino en Processing.

• Enviar datos desde Processing a Arduino.

• Recibir los datos enviados desde Processing a Arduino.

• Configurar un “handshake” entre Arduino y Processing para controlar

el flujo de datos.

Page 5: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

2. Arduino: primeros pasos

• Comandos básicos

• int ledPin = 13;

• pinMode(pin, modo) modo=INPUT o OUTPUT

• digitalWrite(pin, modo) modo=HIGH o LOW

• digitalRead(pin) devuelve HIGH o LOW

• analogRead(pin) devuelve valor [0, 5V] = [0, 1023]

Page 6: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• Utilizada para la comunicación entre la placa Arduino y un

ordenador o dispositivo.

• Todos los arduinos tienen al menos un puerto serie (UART; USART).

• Se comunica a través de los pins digitales 0 (RX) y 1 (TX), como

también por el cable USB. Anula los pins 0 y 1 si se utiliza.

Page 7: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• readBytes()

• Lee un grupo de bytes del buffer.

• Syntax:

Serial.readBytes()

• Parámetros:

serial: Serial: cualquier variable de tipo Serial.

• Devuelve:

Byte[] o int

• list()

• Devuelve una lista

de los puertos serie

disponibles

Page 8: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• readString()

• Devuelve los datos leídos del buffer como ASCII del buffer como String.

Para transmitir con Unicode o UTF8 habría que realizar una conversión.

• Syntax:

serial.readString()

• Parametros:

serial: Serial: Cualquier variable tipo Serial.

• Devuelve:

String

Page 9: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• readBytesUntil() • Lee del puerto hasta que detecte el carácter especificado en inByte.

• Syntax:

Serial.readBytesUntil(inByte)

• Parámetros:

serial: Serial: cualquier variable de tipo Serial.

inByte: int: carácter designado para señalar la finalización.

• Devuelve:

String

Page 10: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• readStringUntil()

• Combinación de readBytesUntil() y readString(). Devuelve null si no encuentra lo que buscamos.

• Syntax:

Serial.readStringUntil(inByte)

• Parámetros:

serial: Serial: cualquier variable de tipo Serial.

inByte: int: carácter designado para señalar la finalización.

• Devuelve:

String

Page 11: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• buffer()

• Define el número de bytes a almacenar en el buffer al llamar a serialEvent()

• Syntax:

serial.buffer(size)

• Parametros:

serial: Serial: Cualquier variable tipo Serial.

Size: int: número de bytes to buffer.

• Devuelve:

void

Page 12: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• bufferUntil()

• Define un byte específico a almacenar en el buffer antes de llamar a serialEvent()

• Syntax:

serial.buffer(size)

• Parametros:

serial: Serial: Cualquier variable tipo Serial.

Size: int: número de bytes to buffer.

• Devuelve:

void

Page 13: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

3. Clase Serial

• serialEvent()

• Es llamado siempre que haya datos disponibles en el puerto serie.

La rutina se ejecuta entre cada función loop(), por lo que utilizar delay dentro de un loop puede retrasar la respuesta.

Para capturar los datos, usar algún método read(),.

Puede ser definido mediante buffer() sólo para activarse cuando un cierto número de elementos es leído o mediante

bufferUntil() para activarse después de que un determinado carácter sea leído.

El parámetro myPort contiene el nombre del puerto donde los datos están disponibles.

• Syntax:

Void serialEvent(Serial myPort) {

statements

}

• Parametros:

myPort: Serial: el puerto con datos disponibles

Statementes any valid statements

Page 14: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

4. Conectando Arduino con Processing

Inicializamos la comunicación serial:

9600 baudios (símbolos/s)

Saludamos por el puerto serie.

Page 15: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

4. Conectando Arduino con Processing

• Importar librería serial:

import processing.serial.*;

Page 16: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

4. Conectando Arduino con Processing

Page 17: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

4. Conectando Arduino con Processing

Page 18: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

5. Conectando Processing con Arduino

• Importar librería serial

• Declarar un objeto de la

clase Serial

• Setup(): buscar puerto,

inicializar comunicación serial

con ese puerto, y 9600

baudios

• Draw(): serial.write

escribimos sobre el puerto

serial.

Page 19: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

5. Conectando Processing con Arduino

Page 20: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

5. Conectando Processing con Arduino

• Necesitamos 2 variables:

1x leer datos que provienen de

processing

1x asignar el led del arduino

• Setup(): configurar la variable del pin

13 de arduino como salida e

inicializar la comunicación serial.

• Loop(): escuchar a ‘val’ y encender el

led si envía 1’s.

Page 21: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

6. Comunicación bidireccional

• Podemos crear un link que permita el flujo bidireccional de datos. Podremos enviar y recibir por el mismo canal.

• Ambas partes han de ponerse de acuerdo para enviar y recibir.

• Arduino enviará una “A” a Processing que contestará con otra “A”. Una vez establecido el contacto, un click en Processing significará enchufar o apagar el LED de Arduino.

• Se modifica el código anterior para minimizar el tráfico del puerto serie y optimizar el tiempo de respuesta establishContact()

Page 22: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

6. Comunicación bidireccional: Arduino

Page 23: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

6. Comunicación bidireccional: Processing

Page 24: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

7. Detector de color

• Enviar múltiples valores desde la placa Arduino al PC.

• Processing leerá estos valores enviados, que variarán

según el valor de la fotoresistencia, y configurará el

color del fondo de pantalla de Processing.

Page 25: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

7. Detector de color

Page 26: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

7. Detector de color

Page 27: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

7. Detector de color

Page 28: E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. • Arduino. • Podemos utilizar ambos para hacer que “hablen”, por ejemplo para mostrar

8. Ejercicio propuesto