Skip to main content

Practica 6: Primera conexión con Arduino

45 mins

Por fin vamos a conectar Arduino con Pure data y vamos a utilizar nuestro ritmo cardiaco para controlar el kick drum. Habéis visto en la lección de Arduino Práctica 4.1 Medimos n... | Librería CATEDU como medir vuestras pulsaciones y detectar un latido. Esta vez en lugar de encender un led cuando se produzca un latido, vamos a mandar un mensaje a traves del puerto Serial.

¿Que es un puerto Serial?

Es una interfaz de comunicación a traves de la cual se envían datos de manera secuencial. Digamos que los datos van un una sola fila uno detrás de otro.

Ahora en lugar de ser la app oscControl la que nos envíe datos a traves de osc, sera Arduino el que envíe esos datos a traves de un puerto Serial. En Arduino vamos a recoger y procesar los valores que el sensor de latidos nos de. Tras procesar esos valores vamos a identificar cuando se produce un latido, y cuando ese latido se produzca vamos a enviar un mensaje a Pure data a traves de Serial para activar el kick drum que hicimos en la Práctica 4: Kick drum ... | Librería CATEDU. El ritmo de nuestro corazón se va escuchar a traves de los altavoces y sonara como un kick drum. Con este ritmo podríamos controlar cualquier evento de pure data, es un juego de números.  

En Arduino cuando detectamos una pulsación en lugar de encender el LED vamos a imprimir en el puerto Serial un 1.

 if(Signal > Threshold){                          
     Serial.println("1");
   }

   else {
   //el else en este caso no lo utilizaremos, no nos hace falta. 
   }

 

Recibir Serial en Pd

Cuando Arduino detecte un latido enviara un mensaje a traves de su puerto serie que tendremos que recibir con pure data. En nuestro caso va a enviar un 1, en Pure data, cuando recibamos ese 1 vamos a activar el kick drum.

¿Como vamos a recibir ese mensaje? Utilizando el objeto "comport". En el tendremos que configurar que puerto serie va a escuchar y la velocidad de comunicación. Tanto el puerto como la velocidad tienen que coincidir con las utiliza nuestro Arduino. En mi caso es el COM 5 y la velocidad son 9600 baudios:

image-1668176179296.PNGFigura 1. Arduino utilizando el puerto serial: "COM5"

 

image-1668176174779.PNGFigura 2. Velocidad del puerto serial en Arduino configurada a 9600 baudios.

Al objeto "comport" le indicaremos el puerto en el primer argumento y la velocidad en el segundo. El mensaje device imprimirá en la ventanita de Pd la lista de puertos Serial disponibles, tendréis que escoger aquel que coincida con el que utiliza vuestro Arduino. Para abrir el puerto enviaremos el mensaje open, en ese mensaje también podemos especificar el identificador del puerto que vamos a abrir, en mi caso es el 5. Para cerrar la comunicación enviaremos un mensaje con la palabra "close".

image-1668175565522.PNGFigura 3. objeto "comport" 

Cerrar la ventana de Serial en Arduino para abrir la comunicación de pure data, si no, no os dejara. Para cargar el programa en Arduino también necesitaremos cerrar el puerto en pure data, de lo contrario nos dará error. No podemos tener dos elementos conectados a la vez al mismo puerto serial

Una vez recibido el mensaje en Pure Data tendremos que decodificarlo, para ello vamos a utilizar el siguiente grupo de objetos. Ahora no vamos a entrar a explicarlo. Simplemente lo utilizaremos tal cual se muestra en la imagen.

image-1668175484615.PNGFigura 4. Grupo de decodificación para los datos que llegan a traves de serial a Pure Data.

A este grupo le llegara el outlet del objeto "comport", Y de su ultimo objeto "cyclone/fromsymbol" obtendremos la información que Arduino envió por el puerto serie, en nuestro caso es el numero 1. Con ese numero activaremos un bang que activara nuestro kick drum. Lo haremos de la misma forma que el la práctica de osc pero esta vez utilizaremos un random para que con cada latido se active un uno de los 3 valores iniciales del envelope que regula la frecuencia del kick drum.

¿Quitar esta última imagen?

image-1668175494969.PNGFigura 5. patch de Pd como el que tenéis que construir en esta práctica 6.

Recordar que tenéis que tener encendido el DSP de pure data para procesar sonido.

¿Qué tenemos que entregar?
 

Sube a la carpeta del Moodle de la Practica 6 los archivos de Arduino y Pure Data que has utilizado para convertir tu latido en un kick drum y escucharlo en tus altavoces. Sube un video en el que se vea tu dedo en el sensor, el led encendiéndose con tus latidos y que se escuche el kickdrum también al ritmo de tus latidos. 

Archivos que tenéis que subir:

  • patch Pd Practica_6_Pd-vuestronombre_vuestroapellido.pd.
  • patch Arduino Practica_6_Ad-vuestronombre_vuestroapellido.ino.
  • video Practica_6_Video-vuestronombre_vuestroapellido

 

 

Figuras:

Figura 1. Arduino utilizando el puerto serial: "COM5"

Figura 2. Velocidad del puerto serial en Arduino configurada a 9600 baudios.