E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. •...
Transcript of E/S: Processing & Arduino - aeiua.files.wordpress.com · 0. Introducción • Processing. •...
![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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/1.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/9.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/19.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/20.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/25.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/26.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/27.jpg)
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](https://reader034.fdocuments.ec/reader034/viewer/2022050804/5b4f4c7c7f8b9a1b6e8bf5f3/html5/thumbnails/28.jpg)
8. Ejercicio propuesto