PD+A Interaction

Embed Size (px)

Citation preview

  • 8/15/2019 PD+A Interaction

    1/177

  • 8/15/2019 PD+A Interaction

    2/177

  • 8/15/2019 PD+A Interaction

    3/177

    3

    6.3.1.  Blink6.3.2.  Lectura de un canal analógico y visualización en un display.6.3.3.  Rampas salidas PWM.6.3.4.  8 Salidas aleatorias.6.3.5.  Órgano Básico6.3.6.  Control de una salida mediante una tecla en modo biestable.

    6.4. Método de Trabajo 3: Modelo Base _m3.pd.6.4.1.  Escribir en una salida digital.6.4.2.  Lectura de una entrada digital desde Arduino a Pure Data.6.4.3.  Blink.6.4.4.  Blink Doble.6.4.5.  Contador Básico.6.4.6.  Lectura de Señales Analógicas.6.4.7.  Lectura de Señales Analógicas 2.

    6.4.8. 

    Activación de Salidas en Modo servo.6.4.9.  Salidas PWM.6.4.10. Semáforo.

    6.5. Método de Trabajo 4: Modelo Base _m4.pd.6.5.1.  Lectura de una entrada y escritura de lo leído en una salida6.5.2.  Blink.6.5.3.  Funciones Lógicas.6.5.4.  Contador.6.5.5.  Semáforo.

    6.5.6. 

    Termostato.6.5.7.  Control de un servo.6.6. Ejemplos Generales con Librerías de Control de Arduino.

    6.6.1.  E1 Control de salidas.6.6.2.  E2 Lectura Analógica.6.6.3.  E3 Termostato.6.6.4.  E4 Función Lógica.6.6.5.  E5 Secuenciador.6.6.6.  E6 Contadores.6.6.7.  E7 Secuenciador PWM.6.6.8.

     

    E8 Generador de Impulsos.6.6.9.  E9 Generador de Notas.

    7.  Ejemplos Básicos Genéricos.

    7.1. Biestable RS.7.2. Interacción con teclados.7.3. Temporizador.7.4. Valores Ventana de Herramientas.7.5. Visualización Señal Senoidal.7.6. Contador Programable.

    7.7. 

    Control de Atributos.7.8. Control PWM con tablero XY.

  • 8/15/2019 PD+A Interaction

    4/177

  • 8/15/2019 PD+A Interaction

    5/177

    5

    1.  Para empezar

    El presente trabajo es el resultado de una amplia investigación de recursos y trabajossobre Pure Data y los procedimientos de conexión de este con Arduino.

    Ya realicé algunos trabajos en este sentido que abordaban el mismo tema pero con uncarácter más específico. En esta ocasión voy a presentar un trabajo más extenso que hadado como resultado la creación de una herramienta a la que he bautizado con elnombre de PD+A Interaction ( Pure Data Arduino Interacción)

    Mis trabajo se basa, fundamentalmente en los trabajos llevados a cabo por distintosautores y desarrolladores de aplicaciones de Pure Data, cuyos " patchs" he utilizado,traduciéndolos y adaptándolos a mis objetivos todo ello naturalmente dentro delcontexto que regula el uso de Trabajos bajo el concepto de Creative Commons.

    Pure Data es un entorno libre de programación muy apreciado en el mundo del diseñolibre. La creación de una librería de comunicación con Arduino llamada Pduino  por

     parte de Hans-Christoph Steiner   ha supuesto ampliar las posibilidades de interacciónentre el mundo físico y el mundo virtual, con aplicaciones muy diversas como eltratamiento de imágenes, videos y sonido. 

    El núcleo principal de PD+A Interaction es un amplio conjunto de librerías confunciones distintas que facilitan la creación de aplicaciones de una manera muy cómodaevitando la creación de subPatchs  como librerías al usuario.

    La mayor parte de este trabajo se ha realizado pensando en mis alumnos de la Escuelade Artes "Antonio López" (Tomelloso C-Real España) en la que soy profesor yresponsable del Laboratorio de Interacción.

    Acercarse al mundo de la programación y uso de una plataforma Open Hardware comoArduino por parte de un estudiante de d Diseño de producto" es un reto muy motivador,

     pues, de alguna manera, tratamos de emular la misma historia de la plataforma Arduinode la que todos sabemos en qué lugar surgió y para quienes se pensó.

    http://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.html

  • 8/15/2019 PD+A Interaction

    6/177

    6

    Este manual es un intento de facilitar la utilización de Pure data + Arduino aplicados ala interacción, sin olvidarme de aquellos usuarios de menor nivel académico osimplemente aficionados a Arduino que también podrán utilizarla con bastantecomodidad y resultados muy interesantes.

    Fuentes en las que está basado este trabajo:

    A continuación cito las fuentes en las que he recogido parte del material que integraPD+A Interaction. 

      Firmata. http://firmata.org/wiki/Download. Copyright (C) 2006-2008 Hans-Christoph Steiner. All rights reserved Copyright (C) 2010-2011 Paul Stoffregen.All rights Copyright (C) 2009 Shigeru Kobayashi. All rights reserved reservedCopyright (C) 2009-2014 Jeff Hoefs. All rights reserved.

     

    Pduino de Hans-Christoph Steiner  

      La Malinette.  Jerome Abel http://reso-nance.org/malinette

      ARGO  pour  Pure Data http://gerard.paresys.free.fr/File/ARGOPdv052-Digest-5-2014.zip

      Meandre. Raphael Isdant

    Bibliografía Recomendada.

      Programando Música Electrónica en Pd de Raúl Lacabanne, que aunque tiene

    detalles pequeños en la traducción no deja de ser muy útil.

      Libro "Loadbang" de Johannes Kreidler traducción al español Pure Data.Spanish Version 

      Theory and Techniques of Electronic Music Miller Puckette

    http://www.firmata.org/wiki/Main_Pagehttp://www.firmata.org/wiki/Main_Pagehttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://reso-nance.org/malinettehttp://reso-nance.org/malinettehttp://gerard.paresys.free.fr/ARGOPd/http://gerard.paresys.free.fr/ARGOPd/http://fr.wikipedia.org/wiki/Pure_Datahttp://fr.wikipedia.org/wiki/Pure_Datahttp://fr.wikipedia.org/wiki/Pure_Datahttp://www.raphaelisdant.fr/meandre/http://www.raphaelisdant.fr/meandre/http://www.pd-tutorial.com/Johannes-Kreidler_Tutorial-PD-spanish.ziphttp://www.pd-tutorial.com/Johannes-Kreidler_Tutorial-PD-spanish.ziphttp://www.pd-tutorial.com/Johannes-Kreidler_Tutorial-PD-spanish.ziphttp://www.pd-tutorial.com/Johannes-Kreidler_Tutorial-PD-spanish.ziphttp://msp.ucsd.edu/techniques.htmhttp://msp.ucsd.edu/techniques.htmhttp://msp.ucsd.edu/techniques.htmhttp://www.pd-tutorial.com/Johannes-Kreidler_Tutorial-PD-spanish.ziphttp://www.pd-tutorial.com/Johannes-Kreidler_Tutorial-PD-spanish.ziphttp://www.raphaelisdant.fr/meandre/http://fr.wikipedia.org/wiki/Pure_Datahttp://gerard.paresys.free.fr/ARGOPd/http://reso-nance.org/malinettehttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://www.firmata.org/wiki/Main_Page

  • 8/15/2019 PD+A Interaction

    7/177

    7

    2.  La herramienta PD+A Interaction

    La aplicación que presento está elaborada para trabajar con la versión de PD 0.43.4-Extended en una computador tipo PC con Windows 8.1 /64 bits. Se entrega con los

    ficheros abiertos y editables tal como se generan en Pure Data (PD). Las librerías hansido creadas por mi o recogidas de otros autores.

     Previo al trabajo con PD+A I nteraction  se deber tener instalado PD  en nuestro

    ordenador y también debemos disponer de una instalación del I DE Arduino  del que

    especialmente utilizaremos el firmware Firmata  que acompaña a la aplicación y que

     previamente deber estar instalado en la tarjeta Arduino. Por lo demás las prestaciones

    de nuestra maquina no deberán ser especiales, eso sí, debemos contar con una Webcam

     y una tarjeta de sonido.

    Para iniciar la aplicación iremos a la careta en la que tenemos descomprimido el

    software y dentro de ella encontraremos el fichero PD+A.pd  que es el que debemosabrir para iniciarla.

    Cuando se ejecuta este fichero de inicio aparecerán tres ventanas: la ventana monitor oterminal de PD, que se deberá minimizar, la ventana de menús y librerías y laventana de trabajo "new.pd ".

  • 8/15/2019 PD+A Interaction

    8/177

    8

    Ventana Monitor o Termina de PD

    El tamaño de las ventanas está definido para que ambas puedan estar abiertas dado quecuando seleccionemos las librerías en la ventana "menú" estas se irán colocando en laventana de trabajo, llamada por defecto "new.pd ".

    En la ventana PD+A.pd  aparece el menú que básicamente es un conjunto de botonesque despliegan una serie de nombres de patch que contienen librerías y modelos detrabajo para el entorno, también contiene botones que despliegan carpetas de ejemplos.

    Desde esta ventana es posible también activar y desactivar los módulos GEM y DSP dePD. También es posible seleccionar, abrir y cerrar puerto USB en el que este conectada

    la tarjeta Arduino.

  • 8/15/2019 PD+A Interaction

    9/177

    9

    En la siguiente figura se muestra la función de cada uno de los botones y selectores dela ventana.

    La estructura de la aplicación con todos sus patchs y ejemplos está integrada en unacarpeta que debemos respetar en lo que se refiere a las ubicaciones de subcarpetas yficheros, dado que la aplicación está concebida para que dentro de esta misma estructura

     podamos colocar nuestros ejemplos de trabajo propios.

  • 8/15/2019 PD+A Interaction

    10/177

    10

    Modo de trabajo:

    Para la realización de un ejemplo de trabajo se procederá de la siguiente manera:

    Se Ejecuta el "patch" PD+A.pd

    Una vez abiertas las tres pantallas: Pantalla Monitor de PD, Pantalla Menu yPantalla new estaremos en disposición de comenzar nuestro montaje.

     No debemos olvidar que PD tiene dos modos de trabajo: Edición y Ejecución que seconmutan o bien desde el Menú Editar->Modo Edición o bien con el "atajo" de teclasCTR+E.

    Los componentes a insertar se pueden recoger de dos modos: Si son componentes de lalibrería de PD se hará mediante la opción del Menú Poner.

    Si los componentes a colocar son los de la aplicación PD+A Interaction se recogerán dela carpeta correspondiente de librería de la pantalla PD+A.pd. Al pulsar en el botón deltipo de librería se despliega una ventana con la lista de componentes de esa librería, seselecciona uno y al hacer clic con el botón izquierdo del ratón se colocaautomáticamente en la hoja de trabajo. No olvidemos que para poder mover loscomponentes sobre la hoja de trabajo y realizar el conexionado, la edición y laconfiguración debemos estar en el Modo Edición.

    Si deseamos ver el contenido encapsulado en un componente puestos sobre este con elcursor del ratón damos al botón derecho y seleccionamos "Abrir" y nos abrirá el"subpatch" que contiene los elementos encapsulados.

  • 8/15/2019 PD+A Interaction

    11/177

    11

    Arrastrar componentes a la hoja de trabajo.

    El conexionado de los componentes se realizar con el ratón, pulsando sobre el terminaldel componente(salida) y llevando el hilo de conexión hacia el terminal de destino(entrada). En la siguiente imagen se muestran detalles tanto de la edición como de laejecución sobre componentes.

  • 8/15/2019 PD+A Interaction

    12/177

    12

    Los modos de trabajo sobre un componente de librería son los que se muestran acontinuación.

     

    Ventana de herramientas.

    Es posible disponer de una Ventana de Herramientas pulsando en el botóncorrespondiente de la pantalla de Menú y desplegar una ventana que contiene cuatroSliders, cuatro Toggles y cuatro Bangs que generan, cada uno de ellos, valores enformato float y booleano que se pueden recoger en objetos que pongamos en nuestraaplicación. Esta opción es interesante para poder disponer de una ventana consimuladores de variables.

  • 8/15/2019 PD+A Interaction

    13/177

    13

    En la siguiente imagen vemos un ejemplo en el que mostramos la forma de conectaresta ventana con nuestra aplicación.

  • 8/15/2019 PD+A Interaction

    14/177

    14

    Estructura de carpetas de la aplicación.

    A continuación se muestra el árbol de carpetas de la aplicación:

    Los modelos de patchs de trabajo que se ofrecen en la opción MODELOS del Menú seabren y sirven de base para trabajar con ellos. Básicamente lo que incluyen son bloquesde librerías que se utilizan de base para que añadiendo nuevos bloques podamos montarnuestra aplicación. En la figura se muestran los modelos.

     Nosotros podremos crearnos nuestros propios modelos de patch siempre que los

    grabemos en la carpeta ..\projects\default .

  • 8/15/2019 PD+A Interaction

    15/177

    15

    El proceso a seguir para empezar a trabajar es el siguiente:

    1.  Se Instala Pure Data en el PC

    2.  Se Instala el IDE Arduino 

    3. 

     Nos aseguramos de cargar el fichero  Firmata en la tarjeta Arduino que seencuentra entre los ejemplos que trae wel IDE Arduino y si no lo podemosdescargar de la Web (es un fichero .ino)

    4.  Se copia y descomprime la aplicación del fichero PD+A Interaction.rar  

    5.  Se ejecuta el fichero pd de la carpeta mencionada anteriormente PD+A.pd 

    6.  Se abren las ventanas que ya hemos mencionado anteriormente.

    7.  Pasamos a trabajar con las siguientes posibilidades:

    a.  Si queremos abrir uno de los ejemplos nos vamos a los botones que abrenlas carpetas de los ejemplos (GENERALES, ARDUINO, SONIDO,VIDEO, IMAGEN, ETC..) y se cierra la ventana new.pd  abriéndose ladel ejemplo que seleccionemos.

     b.  Si lo que deseamos es crear un nuevo patch nos quedamos con la ventananew.pd  y sobre ella vamos incluyendo las librerías de objetos quequeramos utilizar.

    c.  Si queremos podemos abrir un "modelo" de los que figuran en la carpetaMODELOS y de ese modo se pre cargará el modelo básico.

    d.   Nunca olvidemos que todo patch que creamos debe tener incluido elobjeto

    http://puredata.info/downloads/pd-extendedhttp://puredata.info/downloads/pd-extendedhttp://puredata.info/downloads/pd-extendedhttp://arduino.cc/en/Main/Softwarehttp://arduino.cc/en/Main/Softwarehttp://arduino.cc/en/Main/Softwarehttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://firmata.org/wiki/Downloadhttp://arduino.cc/en/Main/Softwarehttp://puredata.info/downloads/pd-extended

  • 8/15/2019 PD+A Interaction

    16/177

    16

    3. Modelos para trabajar con PD+A Interaction.

    Los modelos que se incluyen en esta versión de PD+A Interaction V.1.0 son lossiguientes:

    3.1. base_m0:

    En este se incluye la librería básica de Pduino de Hans-Christoph Steiner 

    PDUINO (Interface de Arduino con Pure Data): Realizada en 2006, bajolicencia GNU GPL; por Gerda Strobl, Georg Holzmann

    (http://at.or.at/hans/pd/objects.html) integrada en el bloque de función "arduino"que es el encargado de establecer la comunicación entre PD y Arduino a travésde la librería Firmata, que siempre debe estar cargada previamente en la tarjeta

    Arduino. Incluye dos bloques que permiten la selección del numero de puerto ysu apertura y un bloque para "cerrar" el puerto. Aparece en este modelo, como lohará en todos un bloque "INCLUDE" que nunca debemos borrar porque en el seincluyen los accesos a las carpeteas de librerías.

    Al seleccionar en el objeto "Hradio" seleccionamos el numero de puerto y loabrimos.

    Al pulsar en "close" cerramos el puerto..

    http://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.html

  • 8/15/2019 PD+A Interaction

    17/177

    17

    Al abrir y cerrar en la ventana "monitor" de PD aparecen estos mensajes.

    Una vez abierta esta ventana base_m0.pd  podremos ir seleccionando objetos dePD o de las librerías de la ventana e menús y se podrán enlazar y constituir el

     patch que deseamos.

    Una vez terminado el trabajo y probado el funcionamiento del patch se podrá aguardar pero siempre haciéndolo con la opción "Guardar como" yseleccionando la carpeta en la que lo guardaremos, dado que si decimos solo"Guardar" se guardará con el nombre "base_m0" en la carpeta de MODELOS.

    IMPORTANTE:  Es muy importante que cuando trabajemos con este modelo

    de "hoja de trabajo" deshabilitemos la conexión con el puerto USB de Arduino,que por defecto siempre se conecta a ejecutar PD+A-pd. Para deshabilitar esta

    conexión y permitir que la hagamos desde nuestro patch debemos hacer clic en

    la correspondiente casilla:

  • 8/15/2019 PD+A Interaction

    18/177

    18

    3.2.  base_m1

    En este modelo se han incluido patchs de PD que permitan automatizar en un primernivel las configuraciones de los pines de la tarjeta Arduino, de tal manera quetendremos mas posibilidades de manejar con comodidad la tarjeta conectada a nuestrosoftware a través de la librería Pduino (la misma que utilizaremos en todos los modelosde base). Más adelante se explican con detalle cada uno de los bloques que aparecen eneste modelo.

     para nuestro trabajo, de momento basta saber que una vez que seleccionemos el puertode comunicación con la ayuda del objeto "Hradio" pasaremos a definir nuestrasentradas salidas tanto analógicas como digitales. En realidad se trata de enviar aArduino los comandos que designan las formas de trabajo de estos pines. Basta hacerclick sobre los objetos "pd Configurar E/S" y "pd Activar Entradas analógica" cadauno de los cuales abre un patch y una ventana en la que podemos designar el modo de

    trabajo de nuestros pines.MODOS DE TRABAJO:

    Configurar Entradas/Salidas Digitales, PWM y Servo

    Con esta opción designamos los modos de trabajo de los canales digitales que secorresponden con los pines digitales de Arduino:

    Podremos definir las entradas:

    Entradas: InputsSalidas: Output

  • 8/15/2019 PD+A Interaction

    19/177

    19

    Analog: Salidas analógicas:PWM: Salidas PWMServo: Salidas de gobierno de servos.

    Las salidas analógicas son equivalentes a las salidas PWM

    Configurar las entradas analógicas:

    Desde esta ventana podremos marcar los canales que deseamos habilitar ara su lectura

    Para escribir en las señales digitales de entrada/salida bastará pulsar sobre el bloque "pdEscribir S/D" apareciendo la ventana sobre la que podremos escribir usando el objeto"Toggle". 

  • 8/15/2019 PD+A Interaction

    20/177

    20

    Si lo que deseamos es monitorizar (leer) el estado de una entrada digital lo que haremosserá pulsar sobre el objeto "pd Leer E/D" y se mostrara el estado del valor de la entradamostrado una "cuz2 en el objeto "Toggle" correspondiente.

    La monitorización de los valores de las señales analógicas de entrada que hayamosconfigurado se realiza mediante el bloque "pd Leer E/A".

    Gobierno de salidas PWM y Servo. Para esta operación se selecciona el bloque "pdEscribir S/A PWM" que despliega la venta de la figura mediante la cual podemos

    enviar valores a los pines seleccionados y programados previamente.

  • 8/15/2019 PD+A Interaction

    21/177

    21

    En el bloque "pd Enviar y Recibir" se muestra un ejemplo básico de control.

    Nombramiento de variables:

    ¿Cómo se nombran los pines para leer y escribir sobre ellos?

    En la figura anterior se muestran las etiquetas con las que podemos enviar o recibr datosde Arduino. Pongamos algún ejemplo.

      Para activar una salida digital: Escribir_Dx (x es un número entre 12 y 13)

       para leer una entrada digital: Leer_Dx (x es un número entre 12 y 13)

      Para Leer una señal analógica: ax (x es un número entre 0 y 5)

      Para escribir valor en PWM/x: PWMx (x es un numero entre 3,5,6,9,10 y 11)

  • 8/15/2019 PD+A Interaction

    22/177

    22

    Escritura en PIN de un valor digital (salida Digital)

    Escribir_Dx  En donde x representa el número de PIN (2 al 13)

    Ejemplo: Para escribir un valor en el PIN 12 deberíamos utilizar la variable

    Escribir_D12 

    A los efectos de Pure Data se trataría de utilizar un objeto (Button) que en su parámetro“Enviar Símbolo” tuviese indicado el valor de esa variable: 

    Lectura del valor de un PIN de valor digital (entrada digital)

    Leer_Dx  En donde x representa el número de PIN (2 al 13)

    Ejemplo: Para leer un valor recogido del PIN 12 deberíamos utilizar la variableLeer_D12

    A los efectos de Pure Data se trataría de utilizar un objeto (Button) que en su parámetro“Recibir Símbolo” tuviese indicado el valor de esa variable. En este caso e objetoButton actuaría sencillamente como un receptor de valor.

    Lectura del valor de un PIN de valor ANALÓGICO (entrada analógica)

    ax  En donde x representa el número de PIN (0 al 5)

    Ejemplo: Para leer un valor recogido del PIN 1 deberíamos utilizar la variable a1

  • 8/15/2019 PD+A Interaction

    23/177

    23

    A los efectos de Pure Data se trataría de utilizar un objeto (Número) que en su parámetro “Recibir Símbolo” tuviese indicado el valor de esa variable.

    Controlar un PIN como salida SERVO (salida servo)

    SERVOx  En donde x representa el número de PIN (2 al 13)

    Ejemplo: Para gobernar el PIN 9 deberíamos utilizar la variable SERVO9 

    A los efectos de Pure Data se trataría de utilizar un objeto (hslider) que en su parámetro“Enviar Símbolo” tuviese indicado el valor de esa variable. Su rango debe ser de 0 a 1

    Controlar un PIN como salida PWM (salida analógica)

    PWMx  En donde x representa el número de PIN (3,5,6,9,10,11)

    Ejemplo: Para gobernar el PIN 12 deberíamos utilizar la variable PWM12 

    A los efectos de Pure Data se trataría de utilizar un objeto (hslider) que en su parámetro“Enviar Símbolo” tuviese indicado el valor de esa variable. Su rango debe ser de 0 a 1

  • 8/15/2019 PD+A Interaction

    24/177

    24

  • 8/15/2019 PD+A Interaction

    25/177

    25

    3.3. base_m2

    Este modelo de trabajo representa un paso más en la facilitación de las tareas de programación de tal manera que no sea necesario recurrir a otros patch deconfiguración. en este caso la configuración de los pines de trabajo se realiza sobre la

    misma página de trabajo .

    En la figura siguiente vemos la pantalla de este patch abierta y a disposición de podertrabajar para programar E/S o realizar una aplicación.

    En este modelo de trabajo no es necesario designar el puerto de comunicación. PD+A alarrancar, si tiene conectado Arduino se configurar la conexión de manera automática ynos olvidamos de ella, bastaría mirar en la parte correspondiente del puerto de la

     pantalla de menú para saber en qué puerto está conectado Arduino

     para configurar el tipo de entrada o salida de los pines de Arduino con los quetrabajaremos basta con marcarlo sobre la pantalla, tal como se ve en la figura siguiente.

  • 8/15/2019 PD+A Interaction

    26/177

    26

    El acceso a las variables se hace mediante las etiquetas que ya se mencionaron en elmodelo anterior.

  • 8/15/2019 PD+A Interaction

    27/177

    27

    3.4. base_m3

    Este modelo está basado en Pduino aplicación realizada por: 2012,  Roman Haefeli  yOlsen Wolf y 2006, Georg Holzmann y Gerda Strobl

    Este objeto de librería es muy útil, podremos ampliar explicaciones de sufuncionamiento pulsado "Ayuda" estando sobre él y marcando con el botón derecho delratón. En este caso aparecerá un nuevo patch abierto tal como se muestra en la siguientefigura. Aquí podremos ver que el bloque invoca a una serie de subpatch, cada uno de loscuales realiza una función específica bien diferenciada.

    https://github.com/reduzent/pduinohttps://github.com/reduzent/pduinohttps://github.com/reduzent/pduinohttp://romanhaefeli.net/http://romanhaefeli.net/http://romanhaefeli.net/http://romanhaefeli.net/https://github.com/reduzent/pduino

  • 8/15/2019 PD+A Interaction

    28/177

    28

    Establecimiento de la comunicación

    En este caso la apertura y cierre del puerto esta bajo nuestro control, por lo que debemosmantener desconectado el puerto en la parte del menú de PD+A. 

    Controlaremos la conexión al puerto USB de Arduino haciendo clic y arrastrando sobreel área marcada. 

    Para establecer la comunicación con Arduino debemos seleccionar mediante e ratónsobre la ventana  en donde parecerá los puertos por los que podemoscomunicarnos con Arduino.

    En al figura siguiente se encuentran los lugares en donde modificar o visualizar lainformación propia de la comunicación con Arduino a través del USB

  • 8/15/2019 PD+A Interaction

    29/177

    29

    La librería principal de esta implementada con Pduino.

    He realizado algunas modificaciones y/o ampliaciones sobre el trabajo desarrollado porsus autores con el fin de facilitar, por un lado la identificación gráfica de la tarjetaArduino y por otro he etiquetado las E/S analógicas/digitales con códigos que permitanel acceso fácil a estos valores. Este acceso se realiza con la misma nomenclatura que he

    designado para los anteriores métodos de conexión:

    Se ha puesto una imagen de la tarjeta Arduino para facilitar la ubicación de loas pines.Para configurar cada PIN bastara pulsa en el área (cuadrado) que esta junto al pin y semostrara un menú desplegable del que seleccionamos la forma de trabajo del PIN

    Configuración de pines:

    El área de trabajo incluye una imagen de Arduino que nos permite ubicar cada uno delos pines de la tarjeta. Se han colocado sobre esta imagen una serie de controles (tipomenú desplegable) que nos permitirán seleccionar el modo de funcionamiento de cada

    PIN y también unos cuadros de selección que permiten habilitar entradas analógicas dela tarjeta.

  • 8/15/2019 PD+A Interaction

    30/177

    30

    Para seleccionar la forma de trabajo de los pines bastará con pulsar sobre el pequeñocuadrado de pin y del menú que aparezca se podrá seleccionar la opcióncorrespondiente al tipo de dato que vamos a designar en el:

    Las etiquetas para invocar o leer señales son las mismas que venimos utilizando en losanteriores modelos base.

    Una vez abierto el puerto USB y configurados los pines de E/S se podrán ir situandosobre el área de trabajo los elementos de librería que necesitemos y se realizara

    á el ensamblado de estos, siempre teniendo en cuenta la notación de nombramiento de

    las variables de "designación de Señales".En ls siguientes capítulos veremos algunos ejemplos.

  • 8/15/2019 PD+A Interaction

    31/177

    31

    3.5. base_m4

    Este modelo de hoja de trabajo incluye, como el anterior , un elemento de librería muy potente que simplifica el trabajo de programación de una aplicación.

    En el objeto aparecen en el lado de E/S Digitales una serie de botones que al pulsarsobre ellos cambian de color y de funcionalidad, permitiendo cada vez que pulsamosdesignar un modo de trabajo para el pin correspondiente.

    La conexión al puerto USB no se controla desde este objeto, la realiza directamente laaplicación al arranca PD+A.pd

    Las señales de entrada y salida se conectan directamente sobre los terminales de Entrada

    o Salida que quedarán activados al ser definidos con los botones de cada uno de los pines.

    En la siguiente figura vemos como quedan definidas las E/S. Los clores de losterminales de la tarjeta nos indican el modo de trabajo de cada uno de los pines.

  • 8/15/2019 PD+A Interaction

    32/177

    32

    La selección del modo de trabajo se realiza pulsando repetidas veces sobre el botónasociado a cada PIN hasta encontrar el color que identifica nuestra selección. Losterminales de la parte superior siempre se habilitarán como entradas por lo que a ellosdebemos conducir nuestros generadores de señal. Los terminales de la parte inferior sonlos que permitan la salida de valores. Cuando un terminal aparece en gris esto significaque no está activo dada la configuración que hayamos realizado

  • 8/15/2019 PD+A Interaction

    33/177

    33

    3.6. new

    Este modelo de hoja de trabajo es el mas elemental solo incluye como también los

    demás modelos un INCLUDE en el que se designar los path que alojan las librerías yresto de carpetas necesarias para el trabajo. este INCLUDE no se debe borrar porque delo contario se perdería la información del lugar en donde guardamos nuestras librerías ymodelos.

  • 8/15/2019 PD+A Interaction

    34/177

    34

    3.7. new_arduino

    Esta plantilla de modelo es exactamente igual que la anterior a excepción de que se hacolocado una imagen de Arduino que no tiene otra misión que servir de "adorno"

  • 8/15/2019 PD+A Interaction

    35/177

    35

    4. Librerías

    4.1. Librería ARDUINO-BASE

    Esta librería contiene los bloques que permiten la conexión con la tarjeta Arduino. Sehan incluido todos los posibles, de tal manera que podremos trabajar con los que másnos interesen.

    Los bloques básicos son los que figuran en la versión de La Malinette de la que yahemos hecho referencia en este manual y la cual esta basada la idea de esta herramienta

    Tales bloques son:

    En el caso de necesitar leer el estado de los pines digital configurados como entrada seselecciona el bloque "ENTRADAS DIGITALES" y se marca sobre la casilla del pin

  • 8/15/2019 PD+A Interaction

    36/177

    36

    correspondiente de tal manera que en la salida obtendremos el valor (estado) del pincomo una variable de tipo booleana.

    Para el gobierno de salidas en los pines digitales se recurre al bloque correspondiente yse configura el modo de trabajo del pin correspondiente. Dependiendo en la casilla queseleccionemos asi configuraremos una tipo de salida u otro

    Para leer las entradas analógicas de la tarjeta Arduino haremos uso del bloque"ENTRADAS ANALÓGICAS" y marcaremos el pin que deseamos leer de entre A0 aA5. El valor nos parecerá en los conectores de salida estando comprendido entre 0 y 1.

    El bloque elemental de conexión con la tarjeta Arduino es el siguiente. Con él se puedenrealizar aplicaciones elementales a base de enviar mensajes a sus "inlets" o leer datos através de sus "outlet". Este bloque es el que incorpora la librería Pduino.

  • 8/15/2019 PD+A Interaction

    37/177

    37

    Descripción de la librería (fichero de ayuda de la librería)

  • 8/15/2019 PD+A Interaction

    38/177

    38

    Librerías Arduino Mega.

    Se han incluido estas librerías con el fin de poder manejar la tarjeta Arduino Megautilizando la misma librería Pduino pero ampliando como es lógico la cobertura de

     pines.

    Los bloques que se han incluido son:

    El resto de librerías, Arduino-gui y Guiduino  ya se han explicado anteriormentecuando hemos hablado de los modelos de trabajo o patch de plantilla.

  • 8/15/2019 PD+A Interaction

    39/177

    39

    4.2. Librería de Elementos de entrada

    4.3. Librería de Elementos de Salida

  • 8/15/2019 PD+A Interaction

    40/177

    40

    4.4. Librería de Elementos de Tiempo

    4.5. Librería de Elementos de Audio

  • 8/15/2019 PD+A Interaction

    41/177

    41

    4.6. Librería de Elementos de Video

    4.7. Librería de Elementos Varios

  • 8/15/2019 PD+A Interaction

    42/177

    42

    5. Librería Pduino

    La librería Pduino fue creada para conectra Arduino con PD a través delconocido Firmware denominado Firmata (http://firmata.org/). Recomiendo ver

    http://arduino.cc/en/Reference/Firmata en donde se explica con detenimiento estalibrería. Actualmente se dospone de la versión “ pduino 0.5.beta8” que se puededescargar en  pduino 0.5.beta8 

    Este es el aspecto de la librería en formato pd y traducida al español que se pueever en el fichero arduino-help.pd anexo a este manual.

    IMPORTANTE: A continuación vamos a explicar los comandos y utilidades dela Liberia Pduino y para poder realizar los ejemplos que voy a explicar es preciso quese cargue, previamente, ek firmware correspondiente en la tarjeta Arduino cn el fin de

     poder realizar la comunicación entte Arduino y PD. El firmware que yo he utilizado esel mismo que viene en el IDE de Arduino que es el que he comentado anteriormente

    http://firmata.org/http://firmata.org/http://firmata.org/http://firmata.org/http://firmata.org/http://arduino.cc/en/Reference/Firmatahttp://arduino.cc/en/Reference/Firmatahttp://at.or.at/hans/pd/Pduino-0.5beta8.ziphttp://at.or.at/hans/pd/Pduino-0.5beta8.ziphttp://at.or.at/hans/pd/Pduino-0.5beta8.ziphttp://at.or.at/hans/pd/Pduino-0.5beta8.ziphttp://arduino.cc/en/Reference/Firmatahttp://firmata.org/http://firmata.org/

  • 8/15/2019 PD+A Interaction

    43/177

    43

    (Firmata). Enla versión del IDE de Arduino 1.0.5 y posteriores se puede cargar yendoal menú Archivo-> Ejemplos-> y cargando el fichero StandardFirmata dentro de lacarpeta Firmata

    Este es el Firmware con el que realizaremos todos los trabajos relativos a lalibrería Pduino . Lo cargamos en el IDE y después lo descargamos sobre Arduino. Unavez realizada la descarga ya podemos comunicarnos con PD.

    Vamos a comentar cada uno de los comando que reconoce esta librería. Antes denada es preciso dejar claro:

     NOTA IMPORTANTE: En todos los ejemplos yejercicios que realicemos siempre deberá figuraren la carpeta en la que coloquemos nuestrosejercicios los ficheros arduino.pd  y arduino-help.pd  con el fin de que cuando sea invocado esteobjeto se pueda leer el fichero correspondiente. Si

  • 8/15/2019 PD+A Interaction

    44/177

    44

    no lo hacemos así deberíamos in dicar el patch en el que se encuentra estos dos ficherosque contiene la librería y la ayuda para su manejo.

    Una vez entro del entorno la libreía se invoca mediante la opción “Poner Objeto”y escribiendo su nombre, es decir Arduino y de esa modo aprecera el bloque de la

    figura:

    Si no está el fichero en la carpeta de uso aparecer rodead con un recuadro enlínea discontinua roja.

    En este manual, no obstante, he incluido ya fichero tipo pd con la libreríacargada y en alguno de ellos con un esquema de la tarjeta Arduino que facilita eltrabajo. Mas adelante lo explicaremos con detalle.

    La librería (bloque arduino) se comunica con el resto de operadores de Pure Datmediante las funciones receive y send (se puede escribir también simplemente r y s)seguida de un texto que representa las variables asociadas a ese comendo. En adelanteveremos ejemplos concretos

    Comandos generales de manejo del puerto USB (COM) del que conectamosArduino. En al siguiente figura se ven las más importantes:

    Mediante el bloque “messaje” open 1 abrimos el puerto numero 1.

    El messaje “close” cierra el puerot que estuviese previamente abierto.

    El messaje “devices” muestra la lista de elementos conectados

    El messaje “version” muestra la version del software Pduino El messaje “firmware” muestra la version del firmware cargado en Arduino 

  • 8/15/2019 PD+A Interaction

    45/177

    45

    Todos ellos se envian al objeto arduino mediante el comando send en el que seespecifica un valor generico de variable $0 y el nombre del obejto arduino. 

    Con la tarjeta Arduino se pueden leer entrada y escribir en salidas digitales y

    analógicas, como se describe en los siguientes comandos que se encapsulan en los sub-paches:

    SUB-PATCHES

    Si abrimos el fichero “arduino-help.pd” que hemos mostrado anteriormente yhacemos clic con botón izquierdo del ratón estando el puntero sobre uno de ellos seabrirá el sub.patch correspondiente y podremos ver en el las funciones propias que seindican en su propio nombre. Es muy recomendable hacerlo y fijarse en los bloque defunción que se colocan en cada caso. Explicare uno por uno estos sub-patch con el finde aclarar la funcionalidad de la librería y de paso me ayudaré de sencillos ejemplos que

    a través de los comandos oportunos nos permitan comunicarnos e interactuar conarduino.

    pd PINMODE:

    En este bloque se recogen las funciones necesarias para definir el modo detrabajo de cada uno de los pines de Arduino.

    De manera básica para configurar un PIN de Arduino basta con enviarle al bloque Arduino mediante la función messaje un mensaje con la siguiente sintaxis:

  • 8/15/2019 PD+A Interaction

    46/177

    46

     pinMode X z

    X= El numero de pin

    z=valor 0 para input , 1 para output , 2 para analog , 3 para pwm y 4 para servo. Se

     puede escribir o bien el numero o bien el tipo

    Más adelante vernos como se puede realizar la configuración de los pines de unamanera mas cómoda (todos de una sola vez)

    pd DIGITAL-INPUT:

    En este caso vemos la manera de leer los datos de entrada digital de la tarjetaArduino (estado de pulsadores, interruptores, etc.. conectados al los pines que hayamosconfigurado previamente como entrada).

    Vemos que lo primero que se hace es utilizar una función de recepción de datos,

    r $0-arduino-out   que entrega su contenido una vez que lo toma del

     propio bloque principal “arduino” al bloque route digital   que extrae losvalores de las señales digitales d entrada y mediante el siguiente bloque route 0 1 2 3 4

    5 6 7 8 9 10 11 12 13  lo pone de maneraindividualizada en un objeto toggle.

  • 8/15/2019 PD+A Interaction

    47/177

    47

    Cada vez que cambie el estado de una entrada se verá reflejado el valor en elobjeto toggle 

    Estado 0 Estado 1

    pd DIGITAL-OUPUT:

    En este caso vemos la forma de enviar datos a las salidas digitales de Arduino.

    Lo que se hace es recoger el estado de los bloques toggle (interruptores) ycomponerlos juntos en un “telegrama” que se envía mediante la instrucción message  a

    la función send $0-arduino  que lo entrega al bloque principal arduino.

    El bloque que realiza esta operación es un sub-patch denominado pd generate

    digital out messages

    Este es contenido del sub-patch pd generate digital out messages

  • 8/15/2019 PD+A Interaction

    48/177

    48

    Se ha colocado un generador de impulso metro 100 que gobernado por un toggle 

    activa todas las salidas (las que estén programadas como tales).

    La función metro es muy interesante para nuestro trabajo. Esta función generaimpulsos de una duración que podemos fijar: metro 100 (impulsos de valor 100 ms.)Podríamos colocar una entrada inlet  derecho del bloque y poder variar con ella laduración simplemente desplazando sobre ella el puntero del ratón pulsando el botónizquierdo.

    Generador de impulsos variables

    pd ANALOG-INPUT:

  • 8/15/2019 PD+A Interaction

    49/177

    49

    Para leer el estado de las entradas analógicas de Arduino recurrimos al uso d elafunción read r $0-arduino-out  que recoge los valores analógicos y los entrega al bloqueroute analog que a su vez los entrega al sub-patch  pd display values without pegginthe CPU  que los saca de manera individual mediante los bloques de simbolo. Lafunción intermedia spigot 0 sirve para establece el corte de tramas de datos utilizando el

    0 como separador de trama, pero esta no es necesaria en las últimas versiones de lalibrería Pduino.

    Veremos luego una forma de configurar de una sola vez la lectura de los canalesanalógicos seleccionados.

    pd ANALOG-OUPUT-PWM:

    Para el gobierno de una salida analógica sabemos que Arduino realice unamodulación de anchura de pulso PWM que viene a ser la emulación de una señalanalógica y que es posible configurar en las salidas PIN3, PIN5, PIN6, PIN9, PIN10 yPIN11 para la versión Ardunio UNO.

    En este caso vemos como ejemplo el gobierno de las salidas PIN9, PIN10 yPIN11 mediante unos sliders. La orden que enviamos al bloque arduino es un messagecon el contenido

     pwm x $1 en donde x representa el numero de pin y $1 el valor enviado.

    Obsérvese que el valor a enviar esta comprendido entre 0 y 1 lo cual significaque de modo real ese rango de 0 a 1 lo convierte el sistema de 0 a 255 que comosabemos es el valor máximo de estas salidas PWM

  • 8/15/2019 PD+A Interaction

    50/177

    50

    Por lo demás el resto de bloques ya los conocemos si bien es cierto que se haañadid un bloque message que pone a cero la salida al hacer clic sobre el, enviando elmensaje pwm x 0

    pd SERVO:

    Basta enviar el mensaje pinMode 9 servo para configurar el PIN9 de Arduino enformato de servo y después lo que debemos hacer es mandar una señal de valor entre 0y 1 mediante el mensaje analog 9 $1 para que en este PIN podamos colocar un servo ymoverlo.

     pd GETTING-INFO:

  • 8/15/2019 PD+A Interaction

    51/177

    51

    Con estos comandos enviados en modo mensajes a arduino se puede saber laversión de firmadata y otras informaciones. Más adelante lo ampliaremos.

    pd SWITCHING-INPUTS:

    Con estas utilidades podemos habilitar tanto los puertos analógicos como los

    digitales.

    Para habilitar basta enviar los mensajes analogIns x y o digitalIns x y en los quex representa el número de canal e y el estado (o deshabilitado y 1 habilitado)

  • 8/15/2019 PD+A Interaction

    52/177

    52

    6.  Trabajando con la librería Pduino

    Ejemplos de uso de comandos Pduino.

    En adelante vamos a ir mostrando una serie de ejemplos que nos permitancomprender mejor el modo de trabajo de la librería Pduino.

    Software necesario:

    Para la elaboración de todas las prácticas que figuran en este manual he utilizadolas siguientes herramientas.

    IDE Aduino Ver. 1.0.5 Que se puede descargar enhttp://arduino.cc/en/Main/Software 

    PD Ver 0.43-4 Extended. Que se puede descargar enhttp://puredata.info/downloads 

    La libreria Pduino. Que se puede descargar enhttp://at.or.at/hans/pd/objects.html 

    El firmware Firmata Que se puede descargar enhttp://firmata.org/wiki/Main_Page 

     NOTA IMPORTATE:

    Estableceremos hasta cuatro métodos de utilización de la librería para cada unode los cuales mostraremos una serie de ejemplos. La idea es facilitar el trabajo trabajar ala vez que flexibilizar su uso. Para cada uno de estos tres métodos he creado un ficherode base para cada uno (base_m0.pd, base_m1.pd, base_m2.pd y base_m3.pd) que sonde solo lectura y que cuando queramos realizar algún ejemplo solo tenemos que abrir,realizar el alambrado y después guardad con el nombre que queramos darle. De estemodo facilito algunas tareas repetitivas como es la selección del canal de comunicacióno la designación de entradas salidas. En los ficheros que se adjuntan a este manual hecolocado los ejemplos en carpetas separadas con los nombres metodo0, metodo1,

    metodo2, metodo3. En todas ellas he colado los ficheros arduino.pd y arduino-help.pd porque son necesarios para cualquier aplicación que hagamos ya que seráninvocados por nuestra aplicación. En alguna carpeta pueden aparecer otros ficheros quecontienen librerías con objetos útiles que se pueden copia y pegar en nuestrasaplicaciones, como por ejemplo displays de 7 segmentos.

    Recuerdo que previamente a todo debemos tener cargado el firmaware Firmataen nuestra tarjeta Arduino, tal como ya hemos explicado anteriormente.

    Es recomendable que ante un mal funcionamiento de nuestra aplicación pulsemos el reset de la tarjeta Arduino.

    http://arduino.cc/en/Main/Softwarehttp://arduino.cc/en/Main/Softwarehttp://puredata.info/downloadshttp://puredata.info/downloadshttp://at.or.at/hans/pd/objects.htmlhttp://at.or.at/hans/pd/objects.htmlhttp://firmata.org/wiki/Main_Pagehttp://firmata.org/wiki/Main_Pagehttp://firmata.org/wiki/Main_Pagehttp://at.or.at/hans/pd/objects.htmlhttp://puredata.info/downloadshttp://arduino.cc/en/Main/Software

  • 8/15/2019 PD+A Interaction

    53/177

    53

    6.1. METODO DE TRABAJO 0: Modelo base_m0.pd

    En este método he reducido al máximo los elementos en el escritorio de trabajode tal manera que solo he dejado la “selección del puerto de comunicación y el propioobjeto de la librería “arduino”. A continuación vemos abierto el fichero base_m0.pd que contiene la base para escribir en ella nuestra aplicación (recuérdese que este ficheroes de solo lectura)

    Fichero: base-m0.pd  

    Para seleccionar el número de puerto bastará con pulsar en uno de las casillas yautomáticamente se indica el puerto seleccionad a la derecha del selector y quedarealizada la comunicación, si no es el puerto adecuado nos avisar de que no lo encontró.Para detener la conexión pulsaremos en el objeto ”close”. Se ha contado con unmáximo de 8 puertos (desde el COM0 al COM7) si fuera necesario más seria cuestión

    de editar el objeto “Hradio” y añadirle más 

     No olvidemos que el objeto arduino esta asociado a un ficheroarduino.pd que debe estar en la misma carpeta en la que estamos trabajando. Hetraducido parte de la ayuda de este objeto para facilitar la comprensión de sufuncionalidad. La idea fundamental consiste en enviar y recibir de este objeto lainformación necesaria para comunicarnos con él y poder gobernar nuestra tarjetaArduino.

    Para la comunicación con Arduino recurriremos básicamente al envío yrecepción de “mensajes” a él haciendo uso de una sintaxis que iremos explicando poco a

     poco.

    El envío se puede hacer por dos métodos distintos:

  • 8/15/2019 PD+A Interaction

    54/177

    54

    A)  Envío de y recepción de mensajes mediante cableado directo con el objeto.

    Los pines superiores de un objeto en la terminología de PD reciben el nombre de“inlets” y los de salida “outlets”. 

    B)  El segundo método es utilizando los bloques de envío y recepción de datos sin

    cableado. Vemos en la figura un sencillo ejemplo.

    Se puede ver que el objeto arduino tiene conectados un receptor y un emisor dedatos: receive $0-arduino y send $0-arduino que son los que reciben y emiten la

    información.

  • 8/15/2019 PD+A Interaction

    55/177

    55

    Vemos que en cualquier lugar de nuestro esquema de trabajo podemos colocar bloque que envía la información a Arduino mediante los correspondientes bloque seemisión o recepción según sea el caso: s $0-arduino y r $0-arduino. Hemos puesto r  y

     s en lugar de receive o send  porque en la sintaxis de PD son equivalentes r  y s a receive y send. 

    Ya sabemos lo suficiente para empezar. Ahora lo que debemos hacer es:

    1.  Cargar el firmware Firmata en la tarjeta Arduino con la ayuda del IDEArduino 1.0.5 (vale el que trae en sus librerías ya incorporado)

    2.  Arrancar PD y cargar el fichero base_m0.pd y empezar a colocar bloque ycablearlos siempre en el modo “Edicion” de PD. No olvides recordar en que

     puerto tienes colocada la tarjeta Arduino para luego poder seleccionarlo y porsupuesto mantener conectado Arduino al puerto USB de tu PC.

  • 8/15/2019 PD+A Interaction

    56/177

    56

    6.1.1.  Activación de una salida en modo intermitente“Blink”. 

    Con este primer ejemplo vamos a gobernar la salida digital PIN10 con una señal

    intermitente que se generará mediante el cocido bloque “metro 500” de PD que lo quehace es generar retardos en la activación y desactivación de su salida que a través de un bloque tipo “toggle” da la orden de enviar la variable $1 (la propia entrada del bloque)al bloque de mensaje mediante la orden “digital 10 $1” que lo que hace es poner el en elPIN1o , que ahora actúa como salida el valor que recibe a través de la variable $1.

    Previamente se debe configurar el PIN10 como una salida y esto se haceenviando el comando “ pinMode 10 1” que también podría escribirse como “ pinMode 10output ” 

    Fichero: m01-blink.pd  

    Vemos que las salidas de los bloque de envío de mensajes se han unidodirectamente al bloque “arduino”.

    El procedimiento para ejecutar la aplicación el indicado en la figura.

    En el terminal de PD aparecerán los mensajes que nos indican que el puerto seabre. Es posible que aparezca algún mensaje de no reconocimiento de instrucciónllegada al puerto pero esto es irrelevante y se debe a la sincronización de eventos en elsistema.

  • 8/15/2019 PD+A Interaction

    57/177

    57

    Bloque de instrucción usados:

    El bloque sub-patch de gobierno de puerto que ya viene preestablecido en elfichero base_m0

    arduino: Bloque del objeto de librería Pduino

    messaje: pinMode 10 1  Programa el pin 10 como salida

    toggle: Bloque tipo interruptor

    stop:  Bloque tipo mensaje que detiene el envío de pulsos

    metro: metro 500  Genera impulsos de 500 ms de duración.

    messaje: digital 10 $1  Envía las ordenes de activación/desactivación de la

    salida PIN10 

    Esquema de montaje:

    Variación sugerida:

    Puedes probar a modificar el valor 400 de la instrucción metro y podrás notarcomo varia la cadencia de impulsos. También es posible colocar un sencillo slider y

     poder variar a tu gusto la velocidad.

  • 8/15/2019 PD+A Interaction

    58/177

    58

    Fichero: m01-blink tiempo variable.pd

  • 8/15/2019 PD+A Interaction

    59/177

    59

    6.1.2.  Activación de una salida y lectura de un canal analógico

    Veamos un ejemplo sencillo de manejo de Arduino mediante el envío yrecepción de comandos a través del bloque de función (patch de pd) Arduino.

    Se trata de gobernar el PIN10 como salida digital y a la vez poder leer el canalanalógico de entrada A1

    Fichero m02-activar salida y leer canal analógico.pd

    Cargamos este ejemplo y lo probamos.

    La manera de actuar sería la siguiente:

    1.  Seleccionamos el puerto serie2.  Hacemos clic sobre el bloque messaje  pinMode 10 1 para decirle a Arduino 

    que el PIN 10 será una salida3.  Pulsamos sobre el bloque messaje analogIns 1 1 para configurar el canal a1 

    como salida analógica

  • 8/15/2019 PD+A Interaction

    60/177

    60

    4.  Pulsamos varias veces sobre el botón y vemos como cambia el valor de lasalida PIN10

    5.  Vemos también que en el bloque de salida numérica de abajo aparece elvalor del cana (mide de 0 a 1).

    Para indicar el canal de conexión de arduino lo hacemos mediante el bloquemessaje open x ( x es el numero de canal seleccionado mediante el bloque Hradio

    Con el bloque messaje close cerramos el puerto.

    Instrucciones:

    messaje: pinMode 10 1  Programa el pin 10 como salida

    messaje: digital 10 $1  Envía un 1 a la salida digital y cuando pulsamos el botónenvía el estado de este

    messaje: analogIns 1 1  Este comando habilita el canal analógico A1 para ser leido

    Este es el bloque librería de Arduino No es necesario ponerle ningún parámetro, aunque se le podría poner el numero de puerto y la velocidad decomunicación.

    route analog: Bloque que lee los valores de los canales analógicos 

    Selecciona el canal 1 del conjunto que entrega el bloque anterior.

    Si queremos modificar el contenido de una de las instrucciones messaje solodebemos poner PD en modo “edición” y cambia lo que deseemos 

    Esquema de montaje

  • 8/15/2019 PD+A Interaction

    61/177

    61

    6.1.3.  Leer y escribir un mismo valor digital 

    Con este ejemplo vamos a realizar la realimentación de una salida con unaentrada de Arduino. El valor del PIN9 lo trasladaremos al PIN12, es decir que cuando,mediante un pulsador activemos la entrada PIN9 a la vez se activara la salida PIN12.

    PIN9 - PIN12

    Quiero además probar en este ejemplo la posibilidad de enviar y recibir datos delobjeto arduino haciendo uso de las funciones receive ( r ) y send ( s ).

    Fichero: m04-leer y escribir señal digital a la vez.pd

    He enmarcado en “lienzos” de color cada bloque de acciones para facilitar laexplicación.

    El bloque de color rojo alberga, como ya sabemos, la función de activación ydesactivación del canal.

    En el bloque azul se ha colocado la configuración de los canales mediante dos bloques de mensaje: pinMode 12 1 (ponemos 1 pero podríamos poner output que indica

  • 8/15/2019 PD+A Interaction

    62/177

    62

    salida) y pinMode 9 0 (ponemos 0 pero podríamos poner input que indica entrada) quedefinen la forma de trabajo de los pines implicados. Vemos que las salidas de estos

     bloques que contienen los comandos de configuración van a un bloque que envía” lainformación “ s $0-arduino” este bloque se podría escribir también como “ send $0-arduino” vemos que su parámetros son $0 la variable que contiene el mensaje

     propiamente dicho y el nombre del bloque al que va dirigido este mensaje, arduino. Nosería preceptivo poner $0 

    El bloque verde contiene los elementos necesarios para realizar la lectura delvalor de entrada PIN9. Estos bloques son: El bloque “r y” que lee el mensaje dearduino, “route digital ” que separa los valores digitales, “route 9” que separa de losvalores digitales el valor del PIN9. Vemos que este bloque contiene también la funciónmensaje “digital 12 $1” que recoge el estado de la variable leída (PIN9) y lo envía aarduino para activar o desactivar según el caso la salida PIN12 a través de un bloque deenvío e datos “ s x”. 

    El bloque gris contiene el bloque principal de la librería Pduino arduino y a else han unido los bloque de envío y recepción de datos: r x y send y, que son los quereciben datos asociados a la variable "x"  y envían datos asociados a la variable "y". 

    Se puede realizar la prueba sin olvidar el protocolo de siempre:

    1.  Seleccionar el canal2.  Configurar el modo de trabajo de los pines3.  Realizar las manipulaciones sobre el pulsador del PIN9 y observar el

    comportamiento del sistema.

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    63/177

    63

    6.1.4.  Gobierno de dos servos conectados a las salidas PIN9 yPIN10

    Vamos a controlar dos servos colocados en los pines digitales PIN9 y PIN10.

    Fichero: m05-control_servo_0.pd  

    El montaje es muy sencillo. Se trata de configurar los pines mencionados enmodo salida servo: pinMode 9 servo y pinMode 10 servo

    Posteriormente, para facilitar la simulación colocamos dos sliders con valoresmin=0 y max=1 que generarán la señal que se enviara mediante los mensajes analog 9$1 y analog 10 $1 al bloque arduino

    Para cambiar los parámetros de los objetos hslider colocados nos ponemos con

    el ratón sobre ellos y pulsamos el botón derecho abriéndose una venta de parámetroscomo la indicada en la figura.

  • 8/15/2019 PD+A Interaction

    64/177

    64

    Ventana de parámetros del bloque hslider 

    Una posible variación que sugiero en este ejemplo es realizar la conexión de bloques con la ayuda de las funciones receive y send

    Fichero m05-control_servo_1.pd

  • 8/15/2019 PD+A Interaction

    65/177

    65

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    66/177

    66

    6.1.5.  Encendido gradual de dos diodos led.

    Este ejemplo, igual que el anterior está relacionado con el gobierno de salidasPWM pero en este caso de distinto tipo una ira al PIN9 y la otra al PIN10.

    Fichero: m06-encendido gradual de LEDs.pd  

    Se han utilizado básicamente dos bloque de creación externa a PD que son losque indicamos a continuación:

    Sub-patch exponential_sigmoid: Genera una función exponencial tipo sigmoid

    Sub-patch  pd display guts: Genera un grafico de los valores que le ponemos ensu entrada

  • 8/15/2019 PD+A Interaction

    67/177

    67

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    68/177

    68

    6.2. METODO DE TRABAJO 1: Modelo base_m1.pd

    En este método he incluido ciertas utilidades integradas en forma de sub-patchen el modelo de trabajo con el fin de facilitar la configuración y la versatilidad en eltrabajo. A continuación vemos abierto el fichero base_m1.pd que contiene la base paraescribir en ella nuestra aplicación (recuérdese que este fichero es de solo lectura)

    Fichero: base_m1.pd

    Elementos integrados en este modelo de trabajo:

    Apertura de puerto:

    Se incluye un sub-patch en el que vemos los bloques necesarios para realizar laconfiguración selección del puerto.

    Debajo de este bloque he colocado de manera resumida el cajetín de selección de puerto y bel botón de cierre de puerto.

    Este patch ya lo hemos utilizado de alguna manera aquí lo único que he pretendido es dejarlo más claro con el fin de facilitar el aprendizaje de quienes lean estemanual.

  • 8/15/2019 PD+A Interaction

    69/177

    69

    Al pulsar sobre el mensaje “devices” nos lista en el terminal de salida de PD loselementos conectados.

    Configuración de modo de trabajo de los pines

    En este caso vemos que con este sub-patch incluido en el entorno de trabajo podemos realizar la programación del modo de trabajo de los pines de Arduino (pines

    digitales del PIN2 al PIN13.

  • 8/15/2019 PD+A Interaction

    70/177

    70

    Se ha colocado un conjunto de elementos Hradio (cajas con varias casillas)mediante las cuales se puede marcar el modo de trabajo de cada pin. Las casillasverticales pertenecen a los modos de trabajo programables de cada uno de los pins( NADA, entrada, salida, analógica, pwm, servo). Es importante tener en cuenta que lasseñales analógicas, pwm o servo solo podrán ser los pines 3,5,6,9,10,11 en el modelo

    Arduino UNO 

    La selección que realicemos se enviara a través de un bloque de función messaje  pinMode X y que se envía mediante un bloque del tipo send  s $0-arduino.

    En este ejemplos se han programado:

    PIN2 y 4 EntradasPIN5 y 6 Salidas analógicasPIN9 y 10 Salidas pwmPIN11, 12 y 13 Salidas digitalesPin7 y 8 No se han programado (por defecto serán salidas digitales)

  • 8/15/2019 PD+A Interaction

    71/177

    71

    Activar entradas analógicas

    En este caso desde el sub-patch podemos seleccionar las salidas analógicas que

    deseamos sean conducidas a la salida del bloque arduino. No siempre necesitaremosdisponer de las seis salidas con las que cuenta Arduino a0 a la a5.

    Bastará marcar sobre el número de salida y automáticamente podremos rescatarel valor en PD. Para ello hacemos uso del bloque de envío de mensajes que ya hemos

    explicado y del bloque messaje que recoge el valor del selector

    El selector también es un sub-patch que mostramos acontinuación y que se encarga de crear el “telegrama” de envió. 

  • 8/15/2019 PD+A Interaction

    72/177

    72

    Escribir valores en las salidas digitales

    Con este sub-patch podemos escribir valores digitales (o o 1) en aquellas salidas

    que están configuradas como tales. Se han colocado dobles bloques de tipo toggle encada salida porque uno de ellos se encarga de recibir los valores que pongamos desdecualquier lugar simplemente con la opción ”Recibir símbolo” en cuya casilla pondremosel valor d ela variable que podrá recibir. Esta configuración se realiza desde la opción“Configurar” que estando en modo edición se activa poniendo el ratón sobre el bloque y

     pulsando el botón “Propiedades”

    Es oportuno que tomes nota de cómo se denominaran las salidas digitales en losucesivo, para ciando trabajemos con este modo de trabajo recogido en el fichero

     base_m1.pd.

     Nombramiento de las señales de salida Digital:

    Escribir_D0, Escribir_D1, Escribir_D2, Escribir_D3…, Escribir_D13

     pero no olvidemos que la señales de ls PIN0 y PIN1 no se utilizaran. Por lo tanto soloestán útiles los pines PIN2 al PIN13 

    Leer valores de entradas analógicas

    Cuando deseamos leer los valores analógicos de los canales de entrada o lectura

    de Arduino lo podemos hacer abriendo este sub-patch. No olvidemos que para leer

  • 8/15/2019 PD+A Interaction

    73/177

    73

     previamente debemos haber seleccionado los canales a leer con la opción que nos brinda el sub-patch anteriormente explicado de “Activar entradas analógicas”. 

    Realmente se trata de leer a través de un bloque “receive” los datos y medianteun enrutador de estos sacarlos en salidas independientes

    En este caso, como hemos hecho en el anterior debemos tomar nota de cual serale nombre con e que podremos invocar alos 6 canales analógicos. Pues debes tomarnota de ello

    Los nombres de los canales analógicos de entrada de Arduino son:

    a0, a1, a2, a3, a4, a5

    Escribir salidas analógicas pwm

  • 8/15/2019 PD+A Interaction

    74/177

    74

    A la hora de escribir datos sobre las salidas de tipo PWM de arduino lo podemos hacer directamente desde este sub-patch. Básicamente se trata de utilizar unsub-patch de recogida de datos pd analog ---------- que mostramos en la figurasiguiente y que a la vista resulta fácil de interpretar.

    Es MUY IMPOTANTE  que no se olvide que de todos los pines digitales dearduino los que tienen la capacidad de ser salidas analógicas del tipo PWM son

    PIN3, PIN5, PIN6, PIN9, PIN10 y PIN11

    La manera de nombrar las señales de este tipo es:

    PWM3, PWM5, PWM6, PWM9, PWM10 y PWM11,

    Resumen de todos los elementos arduino-test

    He creado un patch en PD para resumir todos estos bloques al que he llamado:

    Test General.pd

    Sugiero que abras este patch y pruebes todas y cada una de las opciones queacabo de explicar, de este modo podrás comprender mejor el funcionamiento dePduino. Debo dejar claro que este patch es una traducción y adaptación del que vieneen la propia librería Pduino 

  • 8/15/2019 PD+A Interaction

    75/177

    75

    Fichero: m10-Test General.pd  

    Hay un segundo fichero de pruebas y test que viene con la librería Pduino y quehe traducido también. Se denomina arduino-test.pd  y viene a ser lo mismo que elanterior su mecánica de trabajo es la misma. A continuación pongo una imagen delfichero abierto.

  • 8/15/2019 PD+A Interaction

    76/177

    76

    Ejemplo general de comandos con el modelo de trabajo base_m1.pd

    Con este ejemplo propongo que te inicies en el manejo de este modelo de trabajobase_m1.pd .

    Recuerda, ya lo hemos explicado, que en la parte derecha están los bloques (sub-patch) de PD que te permiten realizar las operaciones que ellos mismos te indican consus nombres, pero lo interesante en este caso es que no será necesario que los abras,salvo para realizar la configuración de los pines digitales mediante el sub-patch Configurar E/S y en el caso de trabajar con señales analógicas debes abrir el sub-patch Activar entradas analógicas con el fin de marcar aquellas con las que deseastrabajar, por lo demás bastará que en los bloque objeto-función de PD invoques lascorrespondientes señales analógicas y digitales de entr ada y salida, etc… 

    Fichero: m10-test base_m1.pd  

    En este ejercicio se han colocado distintas ordenes sobre las variables de Arduino.

    He utilizado bloques del tipo receive  para recoger señales de arduino

    y bloques de tipo send  para enviar señales, también he colocadodirectamente bloque en de activación (Toggle o Bang en los que directamente,mediante la opción propiedades he colocado para enviar o recibir, según el caso las

     propias variables. De cualquiera de las dos formas podemos realizar el gobierno ylectura de señales.

    Activamos el PIN11 con un Bang ymediante la función send s  Escribir_D11 

  • 8/15/2019 PD+A Interaction

    77/177

    77

    Con un objeto Toggle (interruptor)activamos el bloque metro que generaimpulso de duración 500 pero con

     posibilidad de variarla y recibe la señal un bloque Bang que la visualiza y además en

    sus Propiedades le hemos configuradocomo

    (No olvidemos habilitar la lectura del

    canal mediante la opción del sub-patch Configurar E/S)

    En este caso se envía una señal variableentre 0 y 1 mediante un Hslider  y un

     bloque send y también con solo unHslider en el que hemos puesto en

     propiedad la opción:

    Enviar símbolo: PWM9

    Etiqueta:  Escribe_directo_en_PWM9

    (No olvidemos habilitar la lectura delcanal mediante la opción del sub-patch Configurar E/S)

    Aquí leemos el valor del canal analógicoa0 de dos formas distintas: con la función

    receive r a1 y directamente colocando en propiedades del bloque Numero

    Recibir símbolo: a1

    (No olvidemos habilitar la lectura delcanal mediante la opción del sub-patch Activar Entradas analógicas)

    Leemos directamente en un bloque

    Toggle el estado de l PIN10 configurando

  • 8/15/2019 PD+A Interaction

    78/177

    78

    en sus propiedades

    Recibir símbolo:  Leer_D10

    (No olvidemos habilitar la lectura del

    canal mediante la opción del sub-patch Configurar E/S)

    Leemos directamente el estado del PIN10mediante un bloque receive r Leer_D10 ylo llevamos el valor a un objeto Toggle 

    (No olvidemos habilitar la lectura delcanal mediante la opción del sub-patch Configurar E/S)

  • 8/15/2019 PD+A Interaction

    79/177

    79

    Ejemplos de trabajo con el modelo “base_m1” 

    6.2.1.  Activación de salida Digital

    Fichero: m11-Activación_Salida_Digital.pd

    Este ejemplo es muy sencillo se trata de colocar dos objetos un Bang y unToggle los cuales han ser activados con el ratón envían el dato a la salida PIN12.

    Propiedades

    Configuraciones previas:

     

    Seleccionamos el puerto

      En esta aplicación no es necesario configurar las E/S digitales dado que pordefecto, como sabemos Arduino considera sus pines digitales como salidas,

     pero se puede y quizá es recomendable configurar el PIN12 como salida. 

    Seleccionaremos el puerto al iniciar la ejecución.

  • 8/15/2019 PD+A Interaction

    80/177

    80

    Obsérvese la forma de trabajo y la diferencia entre los objetos Bang y Toggle, Bang actúa en modo biestable (un impulso activa y e siguiente desactiva) sin embargoToggle actúa como un interruptor.

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    81/177

    81

    6.2.2.  Lectura de una entrada digital 

    En este ejemplo sencillo se trata leer el estado de una entrada digital de Arduino PIN10.

    Se recoge el valor en un objeto PD de tipo Toggle. 

    Fichero: m12-lectura entrada digital.pd

    El Toggle se configurar de esta manera Propiedades 

    Configuraciones previas:

      Seleccionamos el puerto

      En esta aplicación configuraremos el PIN10 como entrada.

  • 8/15/2019 PD+A Interaction

    82/177

    82

    Obsérvese la forma de trabajo y la diferencia entre los objetos Bang y Toggle, Bang actúa en modo biestable (un impulso activa y e siguiente desactiva) sin embargo Toggle actúa como un interruptor.

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    83/177

    83

    6.2.3.  Lee y escribe señal digital

    Leeremos una señal de la entrada PIN10 de Arduino y este mismo valor losacaremos por el PIN12 que actuará como salida.

    Fichero: m13-lee y escribe señal digital.pd  

    Este ejemplo es muy sencillo. Bastará configurar los objetos Toggle asociado aellos las variables digitales mediante la opción Propiedades de cada uno de ellos (clic

     botón derecho estando sobre el objeto)

    Configuraciones:

  • 8/15/2019 PD+A Interaction

    84/177

    84

      Como siempre seleccionamos el puerto

      Se deben configurar los canales digitales mediante Configurar E/S

    Esquema del montaje:

  • 8/15/2019 PD+A Interaction

    85/177

    85

    6.2.4.  Alarma

    Este ejemplo nos permite comprender el funcionamiento del objeto PD denominadometro que lo que hace es generar impulsos (metrónomo) a su salida en función deltiempo que nosotros le designemos “metro 1000” impulsos cada 1000 ms que hemos

    etiquetado como “CAMBIO DE TIEMPO”. 

    Fichero: m14-alarma.pd

    Gobernamos la aplicación con dos elementos de tipo Bang que recogen susvalores (ordenes de actuación) de los pines PIN10  Activar  y PIN9  Desactivar . Se hacolocado un botón de prueba para detener la señal del bloque metro “BOTON DEPRUEBA” 

    Los botones Bang se configuraran como elementos de envío de señal

    Propiedades

    Propiedades

  • 8/15/2019 PD+A Interaction

    86/177

    86

    Propiedades

    La salida se realiza hacia el PIN12

    Configuraciones:

      Seleccionamos el puerto.

      Configuraremos las E/S digitales de esta forma

    Sugiero que se modifique el tiempo del bloque metro bien editando el bloque o poniendo un objeto Hsilder en su inlet  derecho.

    El Hslider se configuraría mediante la opciónPropiedades de esta manera:

    En la figura muestro como quedaría este:

    Fichero: m14- alarma_1.pd

  • 8/15/2019 PD+A Interaction

    87/177

    87

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    88/177

    88

    6.2.5.  Vúmetro

    En el siguiente ejemplo implementaremos un sencillo vúmetro que medirá laseñal recogida a través del canal analógico de Arduino A1 y mediante una cadena decomparadores excitaremos hasta 6 salidas digitales pinesPIN7,PIN8,PIN9,PIN10,PIN11,PIN12.

    Fichero: m15-vumetro.pd  

    Se han dispuesto los siguientes bloques:

    Bloque Número que recoge el canal a1

  • 8/15/2019 PD+A Interaction

    89/177

    89

    El bloque producto se ha colocado para multiplicar el valor de entrada (canal a1)que como sabemos Pduino entrega con un valor entre 0 y 1 a un valor más alto, en

     principio se multiplica por 100 pero con el bloque Numérico que tiene asociado se puede variar el valor simplemente pulsando y arrastrando el ratón sobre él.

    Finalmente se encuentran los bloques de comparación y los bloque Toggle desalida que visualizan las salidas a la vez que envían los valores a las salidas físicas delos pines de Arduino con las etiquetas:

    Propiedades-> Mensajes-> Enviar Símbolo: Escribir_D7, … Escribir_D12(para cada uno de los Toggle) poniendo en cada uno de ellos el color adecuado (verde,amarillo y rojo) 

    Configuraciones:

     

    Como siempre seleccionamos el puerto

      Se deben configurar los canales digitales mediante Configurar E/S

      Con la opción Activar Entradas analógicas activamos el canal a1

  • 8/15/2019 PD+A Interaction

    90/177

    90

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    91/177

    91

    6.2.6.  Alarma tritonal

    Utilizando un sub-patch  “pd Alarma 3 tonos” de PD, encontrado en el foro, he realizado la implementación de una alarma que se activa a

    través del PIN10 de Arduino y en la que también se recoge el valor del canal analógicoa2 para utilizar la señal como control de amplitud de la salida de sonido

    Fichero: m16 -alarma tritonal.pd  

    En esta ocasión vamos a recurrir al uso de la herramienta DSP de PD que permite el control del sonido de nuestro PC para ello se genera el mensaje mediante un

     bloque messaje con el contenido que se ve dentro del bloque, con estemensaje activamos el sonido del PC

    Se ha utilizado un bloque Toggle para recoger el valor del PIN10 que trabaja

    como entrada en la tarjeta Arduino  en el que se ha configuradomediante Propiedades (clic botón derecho estando sobe el objeto) como

  • 8/15/2019 PD+A Interaction

    92/177

    92

    El Vslider que recoge el valor “Amplitud de Canal A2 Valor de 0 a 1” quedaríaconfigurado de la siguiente manera

    Ponemos a continuación el Sub-patch que genera el sonido pd Alarma 3 tonos:

    Configuraciones:

      Como siempre seleccionamos el puerto

      Se deben configurar los canales digitales mediante Configurar E/S

      Con la opción Activar Entradas analógicas activamos el canal a1

  • 8/15/2019 PD+A Interaction

    93/177

    93

    6.2.7.  Lectura canal analógico.

    Leeremos un canal analógico, concretamente el canal A1 y lo mostraremos en undisplay de cuatro dígitos que hemos creado como sub-patch y hemos colocado en

    nuestro ejemplo simplemente poniendo en un Objeto su nombre . Esfundamental que para invocar a este sub-patch exista en la carpeta en donde tengamosgrabado nuestro ejemplo.

    Fichero: m17- lectura canal analogico.pd

    La señal que leemos tiene un margen de valor entre 0 y 1 y por lo que hacemoses escalarla de 0 a 1024 que como sabemos es el valor que entrega realmente Arduino 

     pero que la librería Pduino reduce de escala de 0 a 1. Para este escalado utilizamos un bloque producto al que le hemos colocado en su parte inlet derecho un bloque

    numerado que permite variar la escala si es que lo deseamos.

    Seguidamente he colocado un bloque numérico para mostrar el valor y a la vezentregarlo al sub-patch display4D.pd 

    Configuraciones:

      Como siempre seleccionamos el puerto

  • 8/15/2019 PD+A Interaction

    94/177

    94

      Con la opción Activar Entradas analógicas activamos el canal a1

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    95/177

    95

    6.2.8.  Termostato básico

    Con el siguiente ejemplo voy a implementar un sencillo termostato. Se trata derecoger la señal del sensor de temperatura del canal analógico de entrada de Arduino A1 etiquetado en nuestro entorno como a1 y realizar la comparación con un valor de

    consigna que generará un Hslider de PD realizándose después la comparación deambos valores en un bloque de comparación.

    Fichero: m18-temostato basico.pd

    La señal se recoge en un bloque de tipo Numero  en el que hemosconfigurado en sus Propiedades la recepción del valor del canal a1, ya sabemos comorealizar esta operación porque lo hemos hecho en los ejemplos anteriores varias veces.

    La señal recogida en el bloque Numero pasa a un bloque Producto que la escalade 0 a 1

    Sea multiplicada por 100, es decir llevándola a una escala entre 0 y 124, a este bloque le he colocado un bloque Numero (inlet  derecho del bloque) con el fin de, si lodeseamos, poder modificar la escala (factor de producto).

  • 8/15/2019 PD+A Interaction

    96/177

    96

    Finalmente la señal escalada se lleva aun Comparador en el que la comparamoscon la consigna generada por el bloque Hslider  que hemos programado susPropiedades para un valor entre 0 y 124 

    Programación del bloque Hslider 

    Configuraciones:

      Como siempre seleccionamos el puerto

      Con la opción Activar Entradas analógicas activamos el canal a1  Seleccionamos el PIN12 como salida con la opción Configurar E/S

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    97/177

    97

  • 8/15/2019 PD+A Interaction

    98/177

    98

    6.2.9.  Contador de impulsos

    Esta vez vamos a contar impulsos que nos llegan desde una entrada de Arduino.En este caso será desde el PIN10

    Fichero: m19-contador de impulsos.pd

    Recogemos el valor del PIN10 (entrada digital) mediante un objeto Bang en elque le hemos configurado la Propiedad de recibir dato:

    Se ha colocado el objeto delay  para evitar “rebotes” en la señalde entrada.

    Se ha creado un contador con la conjunción de dos bloques uno de tipo float 

    y uno de suma  . En el bloque float (inlet  derecho) se ha colocado una puesta a cero y el bloque suma el valor de incremento en la suma, téngase en cuenta quese podría sumar (avanzar) o restar (retroceder) en las cuentas de impulsos.

    IMPORTANTE: El reset se lleva a cabo cuando llega el siguiente impulso en laentrada

  • 8/15/2019 PD+A Interaction

    99/177

    99

    Configuraciones:

      Como siempre seleccionamos el puerto

      Seleccionamos el PIN10 como entrada con la opción Configurar E/S

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    100/177

    100

    6.2.10.  Contador de impulsos con display

    PD tiene un bloque de función llamado counter que ofrece interesantes prestaciones para nuestro trabajo, por eso lo hemos elegido para esta nueva variacióndel contador de impulso en la que además hemos colocado un display de hasta 3 dígitos

    que permita mostrar la cuenta de manera vistosa.

    Fichero: m110-contador impulsos display.pd  

    Los impulso, de la misma manera que en el anterior caso los recogemos por laentrada PIN10y los llevamos al contador. En el contador hemos utilizado tres de susinlets con el fin de poder fijar el modo de cuenta (Up,Dw y Ap-Dw), puesta a cero enel siguiente impulso y puesta a cero inmediata.

    Destaco también el conjunto de bloques que permiten el desdoble del numero desalida del contador en Centenas, Decenas y Unidades que como se puede ver es tansencillo como hacer divisiones por 100, 10, 1 respectivamente utilizando el bloque

    mod.

  • 8/15/2019 PD+A Interaction

    101/177

    101

    Obsérvese que se puede cambiar el color de los números del display 

    .

    Configuraciones:

      Como siempre seleccionamos el puerto

      Seleccionamos el PIN10 como entrada con la opción Configurar E/S

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    102/177

    102

    6.2.11.  Control gráfico de dos salidas

    PD tiene un bloque muy interesante que vamos a experimental con el en esteejemplo. Se trata del bloque grid que despliega una caja en el área de trabajo dentro dela cual, al mover el ratón, se entregan en sus salidas oulet  los valores de las coordenadasz e y de la posición del ratón en la caja.

    Fichero: m11-control grafico de dos salidas pwm.pd

    Lo que nosotros haremos será recoger estos valores y llevarlas a las salidas

    digitales PIN10 y PIN11 que configuraremos como salidas analógicas de tipo PWM.Hemos dispuesta para cada salida un slider de tipo Hslider que nos muestra el valor.Los valores se entregan Arduino mediante los bloques numéricos en los que hemosconfigura su propiedad

  • 8/15/2019 PD+A Interaction

    103/177

    103

    Ventanas de parámetros de los bloques Numero 

    Configuraciones:

      Como siempre seleccionamos el puerto

    .

      Seleccionamos el PIN10 y PIN11 como salidas de tipo PWM con la opciónConfigurar E/S

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    104/177

    104

    6.2.12.  Generador de tono básico

    PD es un lenguaje que incorpora poderosas herramientas orientadas altratamiento de señales de audio. Quiero realizar un sencillo ejemplo en el que poderemitir un tono de frecuencia y amplitud variable haciendo uso de dos canales de entrada

    analógicos de Arduino los cales A1 y A2 (señales a1 y a2) con el primero controlar lafrecuencia generada por un bloque de tipo

    Fichero: m12- genera tono0.pd  

    La señal que controla la frecuencia la debemos cambiar de escala ya que se nos

    entrega con un valor comprendido entre 0 y 1 y por eso la multiplicamos por 5000 parallevara a una escala superior .

    El objeto producto se encarga de multiplica la señal por el valor de la señala2 (control de volumen) que varía entre 0 y 1 (esta vez se deja la señal tal como se nosentrega).

    Finalmente la seña que es enviada al dispositivo de sonido mediante el bloque

    . El bloque de sonido en PD se denomina dsp y para activarlo se debe hacer o

     bien desde la ventana de visualización o en la propia ventana de trabajo poniendo elobjeto de nombre pddp/dsp  para luego aparece en forma

  • 8/15/2019 PD+A Interaction

    105/177

    105

    y permitir fácilmente la conexión y desconexión de la unidadde audio. Ya hemos puesto otro método en este manual pero ahora pongo este para teneruno más.

    Configuraciones:

      Como siempre seleccionamos el puerto

      Seleccionamos para leer los canales a1 y a2 Activar Entradas analógicas

    Esquema de montaje: 

  • 8/15/2019 PD+A Interaction

    106/177

    106

    6.2.13.  Generador de tono básico con visualización de señal.

    En este ejemplo, ampliación del anterior, he incluido un bloque derepresentación grafica con el fin de visualizar las características de la señal que se

     produce.

    Fichero: m13-genera tono1.pd  

    La parte de visualización se resuelve con un bloque tabwrite 

    y el correspondiente bloque Matriz que es el que muestra el gráfico

    Las propiedades del lienzo del grafico son:

  • 8/15/2019 PD+A Interaction

    107/177

    107

    Configuraciones:

      Como siempre seleccionamos el puerto

     

    Seleccionamos para leer los canales a1 y a2 Activar Entradas analógicas

    Esquema de montaje: 

  • 8/15/2019 PD+A Interaction

    108/177

    108

    6.3. METODO DE TRABAJO 2: Modelo base_m2.pd 

    En este método he incluido ciertas utilidades integradas en forma de sub-patch en el modelo de trabajo con el fin de facilitar la configuración y la versatilidad en eltrabajo. A continuación vemos abierto el fichero base_m2.pd que contiene la base paraescribir en ella nuestra aplicación (recuérdese que este fichero es de solo lectura).

    Fichero: base_m2.pd  

    Uno de los objetivos de este modelo de trabajo con la librería Pduino es tener enel área de trabajo disponibles las señales propias de Arduino para poder conectar en las

     propias salidas los valores.

    La denominación de las señales para ser tanto para leerlas como escribirles es lasiguiente:

    Entradas Digitales:

    Leer_D2, Leer_D3… LeerD13 que se corresponden con lo Pines PIN2, PIN3,PIN4,..PIN13

    Salidas Digitales:

    Escribir_D2,Escribir_D3,Escribir_D4,…. Escribr_D13 que se correspondenigualmente con los pines PIN2, PIN3, PIN4,..PIN13

    Entradas Analógicas:

  • 8/15/2019 PD+A Interaction

    109/177

    109

    a0, a1, a2, a3, a4, a5 que se corresponden con los pines A0,A1, A2,A3, A4, A5de Arduino 

    Salidas analógicas (PWM)

    PWM3, PWM5, PWM6, PWM9, PWM10, PWM11 que se corresponderíancon los pines digitales de Arduino PIN5, PIN6, PIN9, PIN10, PIN11

    Acceso a las señales:

      Para acceder a las señales se puede hacer por los dos métodos: Mediantela opción de configuración de Propiedades del objeto que se trate y luegoen la colocación del nombre de la variable que deseamos leer (Recibirsímbolo) o en la que deseamos escribir un valor (Enviar símbolo).

      La otra opción sería colocando directamente un cable de unión con laentrada o salida correspondiente, distinguiendo siempre lo que es unaentrada (inlet) y una salida(outlet) en un bloque

    En este modelo la selección del puerto se hace igualmente pulsando en el objetomulticaja y de la misma manera para configurar las E/S digitales se hace en las casillascorrespondientes de configuración. La selección de canales analógicos a mostrar se haceen la multicaja “Selección” 

  • 8/15/2019 PD+A Interaction

    110/177

    110

    Las salidas analógicas solo se pueden ver en los sliders pero no se puede realizarla conexión con ellos.

  • 8/15/2019 PD+A Interaction

    111/177

    111

    6.3.1.  Blink

    En este ejemplo primero del modelo de trabajo m2 hemos conectado a la salidaPIN11 los bloque necesarios para que se envíe a esa salida una señal digital intermitentegenerada con la ayuda de un pulsador Bang y un bloque metro al que hemos colocado

    un tiempo que variaremos en función de la señal recibida del canal analógico A1 (señala1) que multiplicamos por 1000 para escalarlo desde (0 a 1) a (0 a 1024).

    De la misma forma se ha colocado un mensaje stop para detener el envío deimpulsos.

    En este ejemplo hemos adoptado el método de cableadlo directo sobre el modelode Arduino m2

    Fichero: m21-blink.pd

    Como los pines de Arduino por defecto están en modo salida no hubiese echofalta poner el PIN11 como salida.

    Configuraciones:

      Como siempre seleccionamos el puerto

  • 8/15/2019 PD+A Interaction

    112/177

    112

     

    Seleccionamos para leer los canales a1 Activar Entradas analógicas y laconfiguración de E/S digitales

    Esquema de montaje: 

  • 8/15/2019 PD+A Interaction

    113/177

    113

    6.3.2.  Lectura de un canal analógico y visualización en display

    En este ejemplo deseamos leer el canal a1 , lo escalamos al valor

    0 a 1024 mediante un bloque de producto y después los mostramos en cuatrodisplay independientes. La visualización se ha realizado en displays independientes y para ello hemos tenido que realizar la descomposición del número en millares, centenas,decenas y unidades

    Fichero: m22-leer canal analógico con display.pd

    Este es el algoritmo para descomponer un numero y mostrarlo en cada display de

    manera autónomaLos display están una librería que se encuentra entre los ficheros

    complementarios de este manual.

    Configuraciones:

      Como siempre seleccionamos el puerto

  • 8/15/2019 PD+A Interaction

    114/177

    114

      Seleccionamos para leer los canales a1 Activar Entradas analógicas y laconfiguración de E/S digitales

    Esquema de montaje:

  • 8/15/2019 PD+A Interaction

    115/177

    115

    6.3.3.  Rampas salidas PWM

    Este ejemplo utiliza un patch realizado ya en el foro de PD. Básicamente de loque se trata es de generar dos señales distintas, una en forma de rampa lineal y la otra derampa exponencial. Mediante un bloque de tipo metro generamos un contador que se

    encarga de alimentar al resto de bloques. Dejamos la explicación del funcionamiento para otro momento

    Fichero: m23-rampas salidas.pd

    Las salidas de señal se llevan a dos Vslider que la muestran y en los que hemosconfigurado sus propiedades para el envío del valor las variables PWM9 y PWM10.

    Dejamos para el lector que r