Upload
hamlet-deathbat-gates
View
216
Download
0
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