Professional Documents
Culture Documents
Desde hace algunos aos, la msica est evolucionando a la misma velocidad que la
tecnologa, por lo que cada vez es ms frecuente encontrarnos con instrumentos musicales
electrnicos capaces de emular casi cualquier gama de sonidos, los cuales se basan en un
mdulo cuyo ncleo es un microcontrolador y un conjunto de sensores o pulsadores
necesarios para la interactividad con el usuario. Los microcontroladores poseen las
caractersticas de un ordenador completo, el cual puede ser programado para que cumpla una
determinada tarea, las aplicaciones de stos son innumerables y se pueden encontrar en
cualquier equipo electrnico.
El mtodo de comunicacin estndar entre instrumentos e interfaces de audio sigue siendo
el protocolo MIDI, gracias a la realizacin de este proyecto he tenido la oportunidad de
mezclar lo tcnico con lo artstico, ampliado mis conocimientos en materias como el audio
digital, la electrnica y la programacin.
En esta memoria presentamos el proceso de diseo y construccin de un instrumento de
percusin electrnico que enva, procesa y gestiona informacin MIDI. La memoria se divide
en tres partes fundamentales donde realizamos un estudio en profundidad del hardware y
software necesario, una etapa de pruebas cuya finalidad principal es lograr generar un cdigo
para el microcontrolador y finalmente una fase de construccin del instrumento. En el
transcurso del proyecto hemos explorado las caractersticas que poseen las bateras de gama
alta.
Para la creacin del prototipo hemos utilizado la plataforma de hardware libre Arduino,
basada en una placa con un microcontrolador y un entorno de desarrollo que implementa el
lenguaje de programacin Processing/Wiring, basado en Java.
El resultado es una batera electrnica con la capacidad de generar sonidos polifnicos que
se compone de once zonas diferentes de golpeo en la que existen platos, timbales y pedales,
una estructura a modo de soporte y un mdulo controlador. La batera que hemos hecho es un
instrumento de bajo coste pero de grandes prestaciones.
Abstract
In recent years, music has been evolving at the same rate as technology, so it is
increasingly common to find electronic music instruments emulating almost any range of
sounds, which are based on a module wich core is a microcontroller, and an array of sensors
or switches required for user interactivity. Microcontrollers have the characteristics of a full
computer, which can be programmed to fulfill a certain task, these applications are numerous
and can be found in any electronic equipment.
The standard method of communication between instruments and audio interfaces remains
the MIDI protocol, thanks to the completion of this project I had the opportunity to of mixing
technology and arts, expanding my knowledge in areas such as digital audio, electronics and
programming.
In this project we present the design process and construction of an electronic percussion
instrument that sends MIDI processes and manages information. The document is divided into
three main parts where we make a detailed study of the needed hardware and software, a
testing stage whose primary purpose is to generate code for the microcontroller and finally a
phase of construction of the instrument. During the project we explored the characteristics
that high-quality drums have.
As prototype we used the Arduino open hardware platform based on a board with a
microcontroller and a development environment that implements the programming language
Processing / Wiring, based on Java.
The result is a drum machine with the ability to generate polyphonic sounds made up of
eleven different striking areas where there are plates, cymbals and pedals, a structure as a
support and a controller module. The instrument that we have created is low-cost but high
performance.
VII
ndice general
Resumen.....................................................................................................................................V
Abstract....................................................................................................................................VII
ndice de cdigos fuente.........................................................................................................XIII
ndice de figuras......................................................................................................................XV
ndice de tablas.....................................................................................................................XVII
PARTE I
MEMORIA...............................................................................................................................19
Captulo 1
Introduccin............................................................................................................................1
1.1 Introduccin.................................................................................................................1
1.2 Descripcin de los bloques del TFG............................................................................2
1.3 Motivacin...................................................................................................................3
1.4 Objetivos......................................................................................................................4
1.5 Situacin actual / Estado del arte.................................................................................4
1.5.1 Tecnologas existentes..........................................................................................4
1.5.2 Tecnologas seleccionadas...................................................................................5
Captulo 2
Marco terico.........................................................................................................................7
2.1 Instrumentos musicales electrnicos...........................................................................7
2.2 El protocolo MIDI.......................................................................................................7
2.2.1 Introduccin.........................................................................................................7
2.2.2 Comunicacin MIDI............................................................................................8
2.2.3 Conexiones MIDI.................................................................................................9
2.2.4 Cable MIDI........................................................................................................10
2.2.5 Canales MIDI.....................................................................................................11
2.2.6 Mensajes MIDI..................................................................................................11
2.2.6.1 Tipos de mensajes .....................................................................................12
2.2.6.2 Mensajes de Canal.....................................................................................12
2.2.6.3 Mensajes de sistema...................................................................................15
2.3 Plataforma de desarrollo Arduino Uno......................................................................18
2.3.1 Qu es Arduino?...............................................................................................18
2.3.2 Por qu usar Arduino?......................................................................................18
2.3.3 Hardware............................................................................................................19
2.3.4 Comunicacin....................................................................................................20
2.4 Software especfico....................................................................................................21
2.4.1 Puerto MIDI virtual ...........................................................................................21
2.4.2 Herramienta de diagnstico MIDI (MIDI-OX).................................................21
2.4.3 Secuenciadores...................................................................................................22
2.4.4 Plugin.................................................................................................................22
Captulo 3
Diseo del sistema................................................................................................................25
3.1 Toma de contacto con la placa Arduino.....................................................................25
3.1.1 Instalacin del software Arduino.......................................................................25
3.1.2 Lectura de un voltaje analgico ........................................................................29
3.1.3 Deteccin de vibraciones mediante sensor piezoelctrico ................................32
3.2 Instalacin de software necesario .............................................................................35
3.2.1 Instalacin y configuracin del controlador ASIO4ALL...................................36
3.2.2 Herramienta de anlisis MIDI-OX.....................................................................39
IX
4.4.3 Montaje............................................................................................................101
4.4.4 Resultado final................................................................................................105
Captulo 5
Conclusiones y lneas futuras.............................................................................................107
5.1 Balance de objetivos................................................................................................107
5.2 Lneas de trabajo futuro...........................................................................................108
5.3 Conclusiones ...........................................................................................................109
PARTE II
PLANOS.................................................................................................................................111
Asignacin de pines en el MCU Atmega16U2..............................................................113
Esquemtico Arduino Uno Rev. 3 .................................................................................114
Configuracin de los pines en el MCU Atmega328P y su funcin en Arduino............115
Asignacin de pines del multiplexor / demultiplexor CD4051B...................................116
Diagrama de bloques funcional del multiplexor / demultiplexor CD4051B.................116
Diagrama de flujo: ejemplo Blink.................................................................................117
Diagrama de flujo: lectura voltaje analgico ...............................................................118
Diagrama de flujo: deteccin de vibraciones mediante sensor......................................119
Diagrama de flujo: MIDI...............................................................................................120
Diagrama de flujo: canal analgico...............................................................................121
Diagrama de flujo: canal digital....................................................................................122
Diagrama de flujo: multiplexor 6 canales......................................................................123
Diagrama de flujo: pad bizona.......................................................................................124
Diagrama de flujo: cambio de nota pad digital .............................................................125
Diagrama de flujo: cambio nota pad analgica.............................................................126
Diagrama de flujo: subir bajar octava............................................................................127
Diagrama de flujo: variar el umbral potencimetro......................................................128
Diagrama de flujo: prototipo.........................................................................................129
Esquema del prototipo...................................................................................................130
Esquema de construccin del pedal de bombo..............................................................131
Esquema de construccin del pedal de charles..............................................................131
PARTE III
PLIEGO DE CONDICIONES................................................................................................133
Hardware.......................................................................................................................135
Ordenador.................................................................................................................135
Plataforma de desarrollo...........................................................................................135
Microcontrolador......................................................................................................136
Multiplexor...............................................................................................................137
Placa de montaje de prueba.......................................................................................137
Placa de prototipo.....................................................................................................137
Caja de plstico para circuitos..................................................................................138
Cable USB................................................................................................................138
Cable microfnico.....................................................................................................138
Cable paralelo de audio bicolor................................................................................138
Cable para protoboard...............................................................................................138
Cable USB-MIDI......................................................................................................138
Conector Jack estreo macho areo 6,35mm ...........................................................138
Conector Jack esttreo hembra areo 6,35mm ........................................................139
Conector Jack hembra mono 6,35mm......................................................................139
Conector Jack hembra estreo 6,35mm....................................................................139
Conector DIN 5.........................................................................................................139
XI
Sensor piezoelctrico................................................................................................139
Switch.......................................................................................................................140
Resistencia ...............................................................................................................140
Diodo zener 5,1V - 1,3W..........................................................................................140
Herramientas..................................................................................................................141
Software.........................................................................................................................142
Sistema operativo......................................................................................................142
Arduino IDE .............................................................................................................142
ASIO4ALL...............................................................................................................142
MIDI-OX..................................................................................................................142
Hairless.....................................................................................................................142
LoopBe......................................................................................................................142
BFD2 (versin demo)...............................................................................................142
Apache Open Office 3.4.1.........................................................................................142
PARTE IV
PRESUPUESTO.....................................................................................................................143
HARDWARE.................................................................................................................145
HERRAMIENTAS Y MATERIALES DE CONSTRUCCIN....................................147
PROYECTO..................................................................................................................149
PRESUPUESTO GLOBAL...........................................................................................151
BIBLIOGRAFA....................................................................................................................153
ANEXO 1. Gua de programacin Arduino...........................................................................155
XII
XIII
ndice de figuras
Figura 1: Diagrama de conexiones MIDI...................................................................................9
Figura 2: Conexin MIDI.........................................................................................................10
Figura 3: Estructura binaria de un mensaje MIDI.....................................................................12
Figura 4: Arduino Uno Rev. 3...................................................................................................20
Figura 5: Ejemplo Blink............................................................................................................27
Figura 6: Captura donde se muestra el men de seleccin de la tarjeta....................................28
Figura 7: Carga de un programa................................................................................................28
Figura 8: Potencimetro............................................................................................................29
Figura 9: Imagen circuito..........................................................................................................30
Figura 10: Esquemtico del circuito.........................................................................................30
Figura 11: Imagen del circuito..................................................................................................33
Figura 12: Esquemtico del circuito.........................................................................................33
Figura 13: Comparacin de latencias en drivers ASIO.............................................................36
Figura 14: Panel principal ASIO4ALL.....................................................................................36
Figura 15: Modo configuracin avanzada ASIO4ALL.............................................................37
Figura 16: Modificaciones para conseguir latencias mnimas..................................................38
Figura 17: Pestaa de configuracin de puertos MIDI en la aplicacin MIDI-OX..................39
Figura 18: Imagen del montaje del conector MIDI...................................................................40
Figura 19: Esquemtico del montaje del conector MIDI..........................................................40
Figura 20: Numeracin pines conector MIDI...........................................................................41
Figura 21: Software Hariless MIDI <--> Serial Bridge ...........................................................43
Figura 22: Monitor de salida y actividad de puertos MIDI del programa MIDI-OX...............44
Figura 23: Cable MIDI-USB.....................................................................................................45
Figura 24: Circuito acondicionador de seal para sensor piezoelctrico a la entrada de la placa
Arduino.....................................................................................................................................48
Figura 25: Configuracin de resistencia interna de pull up......................................................48
Figura 26: Configuracin de resistencias de pull up y pull down.............................................49
Figura 27: Esquema de montaje para un sensor piezoelctrico y un pulsador..........................50
Figura 28: Batera de 6 canales.................................................................................................53
Figura 29: Batera de 12 canales...............................................................................................54
Figura 30: Comparacin de un multiplexor con un conmutador controlado ...........................55
Figura 31: Configuracin de pines del multiplexor / demultiplexor CD4051B.......................56
Figura 32: Conexin multiplexor 4051 a placa Arduino...........................................................57
Figura 33: Formas de construccin pad bizona........................................................................60
Figura 34: Conexin de de piezoelctrico y pulsador para silenciar un plato..........................61
Figura 35: Esquema de montaje de un sensor piezoelctrico y dos botones de seleccin........62
Figura 36: Esquema de montaje de un sensor piezoelctrico y un potencimetro...................64
Figura 37: Tonos naturales y semitonos....................................................................................65
Figura 38: Pad multicapa, vista de perfil..................................................................................68
Figura 39: Elaboracin de las capas para pad de timbal...........................................................69
Figura 40: Elaboracin de las capas para pad de plato.............................................................70
Figura 41: Lijado de la superficie reflectante...........................................................................70
Figura 42: Soportes de pads en proceso de secado...................................................................71
Figura 43: Soldadura de los cables del sensor a los cables de ampliacin...............................72
Figura 44: Colocacin funda termo retrctil tapando la soldadura...........................................72
Figura 45: Funda termo retrctil instalada................................................................................72
Figura 46: Fijacin del sensor a superficie reflectante..............................................................73
XV
ndice de tablas
Tabla1: Cuadro sinptico mensajes MIDI.................................................................................12
Tabla2: Relacin de las notas con su nmero...........................................................................42
Tabla3: Comparacin de los modos de conexin del instrumento al ordenador.......................46
Tabla4: Tabla de la verdad del multiplexor CD4051B..............................................................56
Tabla5: Gama de sonidos charles..............................................................................................59
XVII
PARTE I
MEMORIA
PARTE I
MEMORIA
Captulo 1
Introduccin
1.1 Introduccin
El diseo de instrumentos musicales digitales relaciona los campos de la programacin
informtica, del audio digital y de la electrnica descubriendo las posibilidades de
combinacin de los mismos.
A continuacin mostramos una entrevista de Graeme Edge, miembro de The Moody Blues,
(original en ingls):
Entrevistador - "Una de las canciones ms curiosas era 'Procession', de Every Good Boy Deserves
Favour, en la cual se observaba el trabajo pionero de Graeme Edge con su batera electrnica.
Cmo sucedi esto?" Graeme - "...Conoc al profesor de electrnica de la Universidad de Sussex,
Brian Groves. Conseguimos crear un kit de batera electrnica, una asombrosa idea. Tuve el panel
de control frente a mi, ya est pasando pero nosotros fuimos los primeros en hacerlo. Haba piezas
de goma con plata en la parte trasera, con una bobina que se mova arriba y abajo en un imn
produciendo una seal, por lo que era sensible al tacto. Tena 5 cajas en lo alto y despus diez toms
y ocho bombos bajo mis pies y adems cuatro lotes de 16 secuenciadores, dos en cada lado. Haba
un hueco para tocar una pandereta, una caja china, una caja y tres toms. An no existan los chips,
hicimos todo con transistores. Tendra alrededor de 500 transistores. La batera por dentro se
asemejaba a un plato de espagueti. Fue magnfico cuando funcion, pero an no era su momento,
era demasiado sensible para tocar..."
CAPTULO 1
La historia de las bateras electrnicas es bastante joven. Empezaron a disearse en los aos
70 y en los 80 se hicieron populares por marcas como Simmons. En aquella poca carecan de
calidad dinmica y tonal. Se enfocaron sobre todo a las msicas como la disco o el techno.
En la actualidad podemos encontrar modelos de alta gama con capacidades MIDI avanzadas,
pads con diferentes zonas sensibles, los cuales dotan de mayor realismo al instrumento,
posibilidad de grabacin y multitud de sonidos que poder elegir.
Las nuevas bateras electrnicas han conseguido corregir la mayora de los problemas de las
primeras bateras, aunque los modelos ms econmicos siguen siendo bastante deficientes.
Grandes marcas como Roland o Yamaha ofrecen kits profesionales enfocados a una
experiencia y una calidad de sonido casi idnticas a las de una batera acstica.
En este proyecto pretendemos disear una batera electrnica a partir de la programacin de
un microprocesador, el cual, conectado al ordenador se comunique con ciertos programas
informticos que permitan la generacin de sonidos. El prototipo tiene aplicaciones que van
desde el campo de la enseanza, hasta la produccin de msica digital.
Este trabajo se plantea como una exploracin de esas pequeas cualidades que tienen las
bateras de alto nivel e intentar disear desde una perspectiva ms econmica los ms
importantes.
terminadas las pruebas del apartado anterior procederemos al montaje real de una batera
electrnica.
2
PARTE I
MEMORIA
1.3 Motivacin
Una de las razones que ms nos han impulsado a llevar a cabo este proyecto es la pasin por
el mundo del sonido y los instrumentos musicales.
Otro aspecto motivador es la posibilidad de poner en prctica conceptos aprendidos en
diferentes asignaturas de la carrera, as como adquirir nuevos en el desarrollo del trabajo. En
primer lugar hacemos referencia al campo del audio digital, siendo el protocolo MIDI todo un
referente en cuanto a la comunicacin entre interfaces musicales y para que sea posible el
funcionamiento de este controlador necesitamos programar un microprocesador que
comunique los eventos con el ordenador donde se est ejecutando el software del instrumento
virtual.
Disear y construir con nuestras propias manos un instrumento que nos permita realizar
trabajos de produccin musical, sin la necesidad de usar equipos de alto coste.
Para la deteccin de los golpes precisamos de sensores que recojan los impactos producidos, a
su vez necesitaremos una serie de componentes electrnicos tales como resistencias, diodos,
multiplexores... por lo que consideramos que este trabajo abarca tambin el campo de la
electrnica, tanto analgica como digital.
CAPTULO 1
1.4 Objetivos
Los objetivos de este trabajo tienen un propsito conceptual y prctico, los cuales estn
profundamente relacionados.
Como objetivo general queremos disear y construir un instrumento de percusin MIDI
basado en microcontrolador, capaz de enviar informacin hacia una plataforma generadora de
sonido.
Objetivo 1. Comprender el protocolo de comunicacin MIDI y explorar sus posibilidades
como herramienta de creacin musical.
Objetivo 2. Elaborar un programa en un microcontrolador que procese las seales recibidas y
adecue al protocolo digital.
Objetivo 3. Afianzar conocimientos de electrnica.
Objetivo 4. Modificar una caja de batera acstica real y hacerla MIDI.
PARTE I
MEMORIA
pueden ser los llamados parches bizona o trizona, basados en el hecho de colocar distintos
sensores independientes en el mismo parche, con lo que tocando un nico tambor podemos
obtener diferentes sonidos.
Una de las partes ms importantes en el diseo de este tipo de instrumentos es la
programacin del microprocesador. A la hora de programar un controlador para una batera
electrnica podemos elegir que chip programar y en qu lenguaje hacerlo. PIC, ATMEL o
TEXAS INSTRUMENTS son ejemplos de marcas con las que se puede llevar a cabo.
Existe en el mercado unas placas de prototipo llamadas Arduino basadas en ATMEL que
emplean un lenguaje de programacin derivado del C en un entorno cmodo para el
programador.
PARTE I
MEMORIA
Captulo 2
Marco terico
2.1 Instrumentos musicales electrnicos
A finales de los 70s y principios de los 80s los primeros sintetizadores basados en en
transistores empiezan a cobrar popularidad gracias a su utilizacin en la creacin de msica
popular. Con el tiempo y la experimentacin en nuevas aplicaciones se fueron creando
sintetizadores con caractersticas muy variadas que fabricaron tanto empresas especializadas
como los propios msicos. Lo que ocasion un caos ya que las interfaces de comunicacin de
los instrumentos no eran compatibles entre s.
Las caractersticas tmbricas e interpretativas del los instrumentos electrnicos ponen a la
msica en una situacin nunca antes experimentada ya que la variedad disponible de
posibilidades permite producir unos efectos y una amplitud de registros inalcanzables para los
instrumentos convencionales.
Esta evolucin dentro de la msica ha generado nuevas maneras de produccin, donde el
compositor puede disponer de una orquesta a tiempo completo sin salir de su casa.
CAPTULO 2
MARCO TERICO
Nos referimos a control automtico cuando un msico utiliza ciertos dispositivos para
interpretar un instrumento musical como si otros msicos estuvieran tocando con l. Este tipo
de dispositivos los conocemos como secuenciadores o lanzadores.
A parte de la necesidad de controlar de manera remota y automtica instrumentos musicales,
los msicos deseaban un estndar que pudiera servir para controlar cualquier dispositivo
musical electrnico, sin importar la marca. Por lo que a mediados de 1983 surge la norma
MIDI (Musical Instruments Digital Interface) para unificar criterios sobre la construccin de
instrumentos musicales electrnicos con tecnologa digital.
La norma MIDI es un protocolo de comunicacin serie que permite a los ordenadores,
controladores y otros dispositivos de msica digitales compartir informacin. Este protocolo
fue desarrollado para ser tan simple y general como fuera posible ya que de este modo los
fabricantes posean gran flexibilidad para el diseo de sus dispositivos.
El protocolo MIDI no define la naturaleza del sonido del sintetizador, nicamente describe la
accin de generar un sonido, por lo que no es un mtodo de compresin de audio digital ni un
lenguaje musical. La transmisin de datos MIDI no son notas musicales sino mensajes, datos
y eventos que dependiendo de la programacin interna del dispositivo cobran un significado u
otro.
1 DIN son las siglas del Instituto de Normalizacin Alemn. Deutsches Institut fur Nomung.
PARTE I
MEMORIA
MIDI OUT: es la salida de informacin de un instrumento. Por este conector salen los
9
CAPTULO 2
MARCO TERICO
MIDI IN: conector por donde entra al instrumento la informacin que viene desde otro
dispositivo MIDI. Es decir, mediante este puerto introducimos mensajes en el
controlador.
PARTE I
MEMORIA
de muy baja potencia, por lo que cuanto ms largo sea el cable ms expuesto estar el sistema
a interferencias.
En los inicios del protocolo MIDI slo se usaban tres de los cinco pines, aunque hoy en da
existen varios sistemas que hacen uso de los cinco, los pines 4 y 5 son usados para transmitir
mensajes MIDI, el pin 2 se utiliza como tierra del sistema y los pines 1 y 3 se utilizan como
sistema de alimentacin fantasma2.
2 Tambin conocida por el anglicismo alimentacin phantom es una manera de proporcionar alimentacin a los
dispositivos que la necesitan a travs de hilos interiores y la malla exterior.
11
CAPTULO 2
MARCO TERICO
Tipos de mensajes
Podemos encontrarnos con ocho (23) tipos de mensajes que a continuacin se detallan en la
Tabla 1.
Nombre
Binario
Hex.
Data 1
Data 2
Note Off
1000 nnnn
8N
Altura
Velocidad
Note On
1001 nnnn
9N
Altura
Velocidad
Poly. Aftertouch
1010 nnnn
AN
Altura
Presin
Control Change
1011 nnnn
BN
Tipo de control
Intensidad
Chan. Aftertouch
1100 nnnn
CN
Presin
Pitch Bend
1101 nnnn
DN
MSByte
Program Change
1110 nnnn
EN
programa
System Message
LSByte
1111 xxxx
FN
Tabla 1: Cuadro sinptico de los mensajes MIDI.
nnnn son los cuatro bits que determinan el canal al que va dirigido el mensaje. Siendo
0000 el canal 1 y 1111 el canal 16.
N corresponde al carcter hexadecimal de este canal (0-F).
Todos los bytes de datos tienen una resolucin ya comentada de siete bits, con valores
comprendidos entre 0 y 127.
En el mensaje Pitch Bend, los dos bytes de datos se combinan para formar un nico
valor con 14 bits de resolucin, comprendido entre -8192 y +8191.
Los mensajes de sistema poseen una estructura diferente que se ver ms adelante.
2.2.6.2
Mensajes de Canal
Son aquellos que actan sobre un nico canal a la vez, el cual viene determinado por los
cuatro bits menos significativos del byte de estado. A continuacin enunciaremos los mensajes
indicando el nombre, el byte de estado correspondiente y los bytes de datos. El canal MIDI
quedar indicado con 'xxxx', de tal manera que para enviar estos mensajes a canales diferentes
lo nico que tendremos que cambiar ser ste nmero. De tal forma que si estamos en el canal
12
PARTE I
MEMORIA
Este tipo de mensaje se usa para indicar el inicio de una nota MIDI. Se genera cada vez que
la tecla es presionada desde el controlador. Cada Note On contiene tres bytes de informacin:
El primer byte nos indica que hay una pulsacin de una tecla y a qu canal va dirigida. El
segundo byte es utilizado para especificar cual de las 128 posibles notas ha sido tocada. El
tercer y ltimo byte se utiliza para indicar la fuerza con que se ha apretado el elemento de
control, dicho de otra manera, corresponde a la intensidad sonora de la pulsacin ejercida. Si
la velocidad es cero puede entenderse como un interruptor que desactiva determinada nota.
Formato del mensaje:
1001xxxx + DATA 1 + DATA 2
NOTE OFF
Utilizamos el mensaje de Note Off para detener la reproduccin de una nota pulsada, es decir,
para liberarla. A cada mensaje del tipo Note On le sigue otro de Note Off. Cuando aparece un
mensaje de Note Off he de aclarar que no corta el sonido producido, sino que deja de
ejecutarlo, esto significa que el sonido caer gradualmente hasta desaparecer. En este
momento nos encontramos en la etapa de decaimiento la cual tambin tiene una valoracin
que depender del sonido y de como se ejecute. A esto se le denomina Release Velocity
(velocidad de decaimiento).
Formato del mensaje:
1000xxxx + DATA 1 + DATA 2
POLYPHONIC AFTERTOUCH
Tambin conocido como Key Pressure representa un valor de post presin polifnico. El
efecto que produce es un vibrato la mayora de las veces pero depende de cmo se haya
programado el sonido. Como su nombre indica, es polifnico, por lo que da un valor
independiente de presin para cada tecla. El primer byte de datos indica la tecla seleccionada,
mientras que el segundo byte de datos transmite el valor de la post presin ejercida en la tecla.
Formato del mensaje:
1010xxxx + DATA 1 + DATA 2
13
CAPTULO 2
MARCO TERICO
CONTROL CHANGE
Dentro de este bloque se incluyen todos los controles de expresin del sonido excepto pitch
bend y after-touch, que se transmiten en mensajes diferentes.
En este tipo de mensaje el primer byte de datos indica el nmero de control o controlador y el
segundo byte indica la cantidad de variacin producida en dicho control, normalmente se usan
valores de 0 a 127 pero existen controladores que solamente funcionan como si fuera un
interruptor.
Formato del mensaje:
1011xxxx + DATA1 + DATA 2
Estos controles tienen asignado un nmero que est establecido en el protocolo MIDI, los ms
habituales son:
Mensajes de Modo.
PROGRAM CHANGE
Este mensaje se transmite cada vez que realizamos cambios de programa. Al tener slo un
byte de datos podemos seleccionar hasta 128 programas aunque algunos instrumentos pueden
acceder a ms programas utilizando otras formas de seleccin. Una de esas formas es emplear
un mensaje de cambio de control con el nmero de control 00 y un valor de control que
selecciona el nmero de programa. Y a continuacin de ste, se enva el mensaje de cambio
de programa dentro del banco.
Formato del mensaje:
1101xxxx + DATA 1
14
PARTE I
MEMORIA
CHANNEL PRESSURE
Es igual que el after-touch salvo que no es polifnico y afecta a todo un canal. Tiene un nico
byte de datos que nos indica el valor de presin ejercida despus del envo de la nota. Es el
ms usado por la mayora de instrumentos.
Formato del mensaje:
1101xxxx + DATA 1
PITCH BEND
Este mensaje se corresponde con la rueda de pitch bend, para codificarlo utilizamos dos bytes
de datos que nos ofrecen 16384 estados diferentes frente a los 127 posibles con slo un byte,
debemos recordar que de los ocho bits posibles, en el byte de datos nicamente se usan los
siete menos significativos ya que el primer bit define el tipo de mensaje y ser siempre cero.
Al codificar con ms estados hacemos posible que las transiciones entre valores sean ms
suavizadas con lo que logramos un efecto de variacin continua y escalonada.
Formato del mensaje:
1110xxxx + DATA 1 + DATA 2
2.2.6.3
Mensajes de sistema
Los mensajes de sistema pueden generarse de manera independiente de los canales MIDI ya
que se usan para controlar toda la red de comunicacin. Debido a ello, todos los instrumentos
conectados debern responder sin importar en el canal que se encuentren.
Existen tres tipos de mensajes de sistema: comunes, exclusivos y de tiempo real.
MENSAJES COMUNES
Muchos secuenciadores son capaces de almacenar varias canciones distintas y ste mensaje
permite seleccionar que cancin reproducir, una vez seleccionada responder a los mensajes
de inicio, parada y continuar.
Formato del mensaje:
F3 + DATABYTE
Donde F3 es el byte de estado expresado en hexadecimal (es una manera muy cmoda de
trabajar con bytes), y el DATABYTE ser el nmero de la cancin que elijamos.
15
CAPTULO 2
MARCO TERICO
Permite que los dispositivos MIDI conectados a una misma red estn alineados en el mismo
lugar de la cancin.
Formato del mensaje:
F2 + DATABYTE 1 + DATABYTE 2
F2 es el byte de estado, los bytes de datos 1 y 2 llevan el nmero correspondiente a la
posicin de la cancin.
Este mensaje se usa para que todos los equipos en una misma red tengan la misma afinacin
en relacin al LA 440.
Formato del mensaje:
F6
Se transmite el byte de estado solamente.
MENSAJES DE SISTEMA EXCLUSIVO
Estos mensajes permiten la transferencia de datos de un controlador a otro sin ningn tipo de
restriccin en cuanto a longitud o formato, la comunicacin se efecta cuando guardamos
datos en un banco de memoria, como podra ser un banco de efectos o programas.
El receptor nicamente recibe y guarda informacin, sin importarle el tipo que sea, la nica
condicin que existe es que cada paquete de datos vaya precedido por un byte de
identificacin (ID NUMBER). Este nmero identifica al fabricante del instrumento
transmisor.
El formato del mensaje es el siguiente:
F0 + ID + . Cualquier nmero de bytes . + F7
Donde F0 indica que se inicia una comunicacin en sistema exclusivo. ID es el nmero de
identificacin del instrumento que est enviando la informacin y F7 indica el fin de la
transferencia en sistema exclusivo.
MENSAJES DE TIEMPO REAL
A continuacin mostramos los diferentes mensajes de tiempo real del protocolo MIDI:
16
PARTE I
MEMORIA
utiliz una velocidad de transmisin de 24 a 128 ppq (pulso por cuarto de nota),
hoy en da alcanza velocidades de 240, 480 o 960 ppq.
Formato del mensaje:
F8
Inicio (Start).
Mensajes de inicio desde el puntero de posicin (SPP), todos los dispositivos
conectados iniciaran desde el punto fijado.
Formato del mensaje:
FA
Continuar (Continue).
Este mensaje se utiliza para retomar la reproduccin despus de la ltima parada.
Formato del mensaje:
FB
Parada (Stop).
Todos los dispositivos se detendrn en el punto fijado por el Stop.
Formato del mensaje:
FC
17
CAPTULO 2
MARCO TERICO
2.3.1 Qu es Arduino?
Arduino es una plataforma de computacin fsica de cdigo abierto basado en un placa
electrnica y un entorno de desarrollo software, adems, es una herramienta muy cmoda para
desarrollar objetos interactivos, pudiendo conectar a sus entradas una gran variedad de
motores, luces y otros sensores. Los proyectos de Arduino pueden ser independientes o
pueden comunicarse con el software que se ejecuta en el ordenador. Las placas de Arduino
pueden ser montadas a mano o compradas ya ensambladas, por otra parte el IDE de cdigo
abierto puede descargarse de manera gratuita. En la Figura 4 mostramos una imagen de la
placa Arduino Uno Rev. 3. Hemos anexado en este documento una gua de programacin para
Arduino que ayuda a comprender el desarrollo de ciertos cdigos implementados en el
documento.
Asequible: las placas de Arduino son relativamente baratas en comparacin con otras
plataformas de microcontroladores. Las versiones ms baratas son obviamente las que
pueden ser ensambladas a mano, y los mdulos premontados pueden adquirirse por un
valor inferior a los 50.
18
PARTE I
MEMORIA
2.3.3 Hardware
Existen mltiples versiones de la placa Arduino. La mayora usan el Atmega168 de Atmel,
mientras que las placas ms antiguas usan el Atmega88. A continuacin mostramos las
diferentes placas de Arduino disponibles:
Nano: una placa compacta diseada para uso como tabla de pruebas, el Nano se
conecta al ordenador usando un cable USB Mini-B.
Mini: sta es la placa ms pequea de Arduino. Trabaja bien en tabla de pruebas o para
aplicaciones en las que prima el espacio. Se conecta al ordenador usando el cable Mini
USB.
Serial: es una placa bsica que usa RS232 como un interfaz con el ordenador para
programacin y comunicacin.
Serial Single Sided: esta placa est diseada para ser grabada y ensamblada a mano.
19
CAPTULO 2
MARCO TERICO
2.3.4 Comunicacin
Arduino Uno puede comunicarse con un ordenador, otro Arduino u otros microcontroladores.
El Atmega328 tiene implementado un UART TTL (5V) de comunicacin serie, que est
disponible en los pines digitales 0 y 1. El firmware utiliza los controladores de comunicacin
USB estndar, por lo que no se necesita ningn controlador externo.
El software de Arduino incluye un monitor de serie que permite leer por pantalla los datos
que se envan a o desde la placa. La placa incorpora unos leds de transmisin y recepcin que
parpadean cuando se estn transmitiendo datos al ordenador.
Con la biblioteca SoftwareSerial podemos establecer la comunicacin serie en cualquiera de
los pines digitales.
El Atmega328 es compatible con I2C(TWI) y la comunicacin (SPI).
20
PARTE I
MEMORIA
21
CAPTULO 2
MARCO TERICO
2.4.3 Secuenciadores
Los secuenciadores son herramientas que nos permiten programar y reproducir eventos
musicales de manera secuencial mediante una interfaz fsica o lgica. Existen de muchos tipos
y de carcter ms o menos profesional, adaptndose a las necesidades del usuario.
Es aconsejable que tengamos en nuestra mquina algn tipo de secuenciador o editor que
permita usar instrumentos virtuales que podamos controlar con nuestra batera electrnica. En
nuestro caso, tenemos instalado Nuendo 4 y FL Studio 10.
2.4.4 Plugin
Podemos definir los plugins como complementos de los programas informticos. Un ejemplo
sencillo es compararlo con la compra de un automvil el cual viene con un equipo de serie
pero en el concesionario podemos adquirir llantas de aleacin, tapicera, y dems extras. Visto
de este modo, el software suele traer caractersticas de serie y lo podemos complementar con
plugins que amplan sus posibilidades.
Este tipo de subprogramas se instalan en el ordenador como cualquier otro tipo de software
aunque para funcionar necesitan estar dentro de otro programa. Existen muchos tipos de
plugins como los editores de efectos, procesadores de dinmica o analizadores de seal,
aunque para este proyecto necesitamos virtualizadores de instrumentos.
Bsicamente son grandes bibliotecas de sonidos con una interfaz grfica que permite ajustar el
sonido de nuestro instrumento.
Hemos observado la existencia de ciertos programas que pueden usarse como plugins dentro
de un secuenciador pero que tambin podemos usarlos fuera del programa. Este tipo de
plugins ya no son nicamente plugins, si no que son aplicaciones completas. Con esto nos
referimos a que puedes abrir un programa virtualizador de bateras sin necesidad de abrir de
antemano el secuenciador. Lo cual genera pros y contras; como beneficios diremos que el
ordenador trabaja ms rpido y existirn menos problemas debidos al tiempo de computacin,
por lo que si solamente queremos practicar con nuestro instrumento sta es una opcin que
consideraremos. Por otro lado, si no tenemos esos problemas de latencia antes comentados,
siempre ser mejor abrir nuestro secuenciador y a continuacin abrir nuestro plugin de
batera. Esta opcin nos permite grabar todo lo que hagamos para luego poder utilizarlo en
una composicin o simplemente observar dnde nos hemos equivocado y aprender de una
manera ms correcta.
22
PARTE I
MEMORIA
DX (Direct X).
nicamente compatibles con editores de audio que trabajan bajo Windows, como
Cakewalk, Sound Forge, Cubase... por esta limitacin, no est tan extendido como el
VST.
23
PARTE I
MEMORIA
Captulo 3
Diseo del sistema
En este tercer captulo de la memoria vamos a iniciar el diseo de nuestro instrumento MIDI,
para ello realizaremos una serie de pruebas necesarias para su construccin, una vez sean
concluyentes tendremos una idea general de cmo realizar el montaje de los elementos as
como la correcta programacin del microcontrolador.
CAPTULO 3
3. Conectar la tarjeta:
Una vez conectada la placa con el cable USB al ordenador, Windows iniciar
el proceso de instalacin, aunque despus de unos instantes fallar.
4. Instalacin de drivers:
Para ello, accedemos a las propiedades del equipo y dentro de la opcin de
administrador de dispositivos, y dentro del subapartado otros dispositivos o en
puertos COM & LPT debe aparecer Arduino. En nuestro caso, apareca dentro
de Otros dispositivos como dispositivo desconocido. Para saber sin duda qu
dispositivo es, lo ms sencillo es desconectar la placa y observar que
dispositivo falta.
Una vez reconocido debemos pulsar en Arduino Uno y elegir la opcin de
actualizar software del controlador.
Despus elegiremos la opcin de buscar software de controlador en el equipo
y seleccionaremos la carpeta donde tengamos el IDE ya descargado. Para ello
entraremos dentro de la carpeta y seleccionaremos la carpeta llamada drivers,
(no la FTDI que se encuentra dentro.)
5. Inicio de la aplicacin:
Una vez iniciemos la aplicacin, si fuera necesario cambiaremos el idioma en
preferencias.
6. Abrir el primer ejemplo:
Iniciaremos nuestra aventura con un primer ejemplo de prueba. Es conveniente
hacerlo la primera vez que tengamos la placa ya que podremos observar si
funciona correctamente. En caso de no ser as, deberamos volver a repetir el
proceso de instalacin.
Como podemos observar en la Figura 5, el ejemplo cargado muestra un
programa que enciende y apaga el led interno durante 1000 milisegundos
situado en el pin digital 13 de la placa, lo podemos encontrar en Archivos >
Ejemplos > 01 Basics > Blink. El diagrama de flujo del cdigo lo podemos
encontrar en la seccin de planos del documento con el nombre Ejemplo Blink.
26
PARTE I
MEMORIA
27
CAPTULO 3
28
PARTE I
MEMORIA
Ahora que ya tenemos instalado el IDE en nuestro ordenador ya podemos empezar a realizar
ciertas pruebas que nos sern tiles para el desarrollo del proyecto.
A continuacin detallamos una listado del hardware necesario para la realizacin de esta
prueba.
Placa Arduino.
Potencimetro de 10 Kohm.
Cables de prueba.
Construccin circuito
Figura 8: Potencimetro
Al girar el potencimetro, cambiamos la cantidad de resistencia a cada lado de la flecha o
cursor de tal modo que variaremos la tensin en el pin central. En la Figura 8 podemos
observar el funcionamiento interno de un potencimetro.
29
CAPTULO 3
30
PARTE I
MEMORIA
Cdigo
En este programa lo primero que tenemos que hacer es fijar la velocidad de comunicacin
serie a 9600 bits por segundo, entre el ordenador y nuestra placa mediante la sentencia:
Serial.begin(9600);
Cdigo 1: Funcin para fijar velocidad de transmisin serie.
A continuacin, en el bucle principal del programa es necesario que establezcamos una
variable para almacenar el valor de nuestra resistencia. Elegiremos que la variable sea de tipo
entero (int) que es capaz de almacenar nmeros de 16 bits y nos es ms que suficiente.
Guardaremos la variable de esta manera:
int sensorValue = analogRead (A0);
Cdigo 2: Variable de almacenamiento para lectura analgica.
Por ltimo, imprimiremos los valores almacenados con la siguiente lnea de cdigo, es
conveniente que al finalizar esta, introduzcamos otra lnea que genere un retraso determinado
31
CAPTULO 3
para ayudarnos a visualizar mejor los valores. En este caso hemos optado por una parada de
un segundo entre muestras.
Serial.println (sensorValue);
delay (1000);
Cdigo 3: Impresin por monitor serie de la variable sensorValue
Como hemos explicado, los valores que nos devuelve el convertidor analgico a digital
quedan comprendidos en un rango de 0 a 1023, pues bien, si lo que queremos es que nos
muestre por pantalla el voltaje en la entrada tendremos que escalar ese nmero.
Para realizar este proceso necesitaremos crear una variable nueva que ser del tipo float,
que nos brinda la posibilidad de almacenar decimales. De este modo mostraremos un
resultado ms real. Hemos de comentar que siempre que se pueda, intentaremos no utilizar
este tipo de variables ya que aumenta el coste computacional del cdigo. El proceso de
escalado ser el siguiente:
float voltage = sensorValue * (5.0 / 1023);
Cdigo 4: Proceso de escalado voltaje analgico.
Y una vez ms, con la funcin Serial.println(); imprimiremos el resultado.
El cdigo se llama Lectura voltaje analgico y lo podemos encontrar en la carpeta Cdigos
Fuente del CD de la memoria.
El diagrama de flujo del cdigo lo podemos encontrar en la seccin de planos del documento
con el nombre Lectura voltaje.
PARTE I
MEMORIA
Placa Arduino.
Sensor piezoelctrico.
Resistencia 1 Megaohm.
Construccin circuito
Tal y como se indican en las Figuras 11 y 12, para la construccin del circuito debemos
conectar el cable positivo del piezo a una entrada analgica y el cable negativo a masa. Con el
fin de limitar en corriente el sensor, colocaremos una resistencia de alto valor en paralelo.
En placas con Arduino Uno tenemos un led interno en el pin digital 13 que nos puede venir
muy bien para realizar pruebas sin necesidad de conectar un led a la placa.
33
CAPTULO 3
Cdigo
Al inicio del cdigo definiremos las constantes y las variables que vamos a usar de la
siguiente manera:
const int ledPin = 13;
const int knockSensor = A0;
const int threshold = 100;
int sensorReading = 0;
int ledState = LOW;
Cdigo 5: Definicin de constantes y variables para apartado 3.1.3.
La primera nos indica que tenemos un led conectado en el pin digital 13, y la segunda que
tenemos un sensor de vibraciones en la entrada analgica A0. La siguiente constante definida
es el umbral, variando ste parmetro podremos aumentar o disminuir la sensibilidad del
circuito.
34
PARTE I
MEMORIA
Luego hemos definido dos variables, esto es as ya que su valor o estado cambiar
dependiendo de la vibracin del piezo. La primera variable sirve de almacenamiento para el
valor de lectura de un sensor, la cual hemos est inicializada a cero. La segunda variable
guarda el ltimo estado del led, lo que nos permite el encendido y apagado.
En la parte del setup()3 declaramos la constante ledPin como salida y iniciamos la
comunicacin a una velocidad de 9600 bps.
Ya en en programa principal, loop()4, leeremos el sensor y guardaremos su valor en la
variable creada:
sensorReading = analogRead(knockSensor);
Cdigo 6: Lectura analgica para apartado 3.1.3.
Ahora compararemos la lectura del sensor con el umbral, de tal manera que cada vez que lo
superemos enviaremos al ordenador la palabra knock en seal de que se ha producido un
ruido. Tambin cambiaremos el estado del led.
Hemos colocado un pequeo retardo de 100 milisegundos para que el rebote del piezo no
hiciera encender y apagar el led muy rpidamente.
El cdigo fuente se llama Knock y lo podemos encontrar en la carpeta Cdigos del CD de la
memoria.
El diagrama de flujo del cdigo lo podemos encontrar en la seccin de planos del documento
con el nombre Deteccin de vibraciones.
3 La funcin setup() se establece cuando se inicia un programa. SE emplea para inciar variables, establecer el
estado de los pines, inicializar libreras, etc. Esta funcin se ejecuta una nica vez despues de que se conecte
la placa a la fuente de alimentacin, o cuando se pulse el botn de reinicio de la placa.
4 La funcin loop() se ejecuta consecutivamente, permitindole al programa variar y responder.
35
CAPTULO 3
36
PARTE I
MEMORIA
CAPTULO 3
1 Dispositivo
Aqu se muestran los dispositivos de audio WDM encontrados en el sistema.
2 Interfaz
Podemos activar o desactivar al igual que con los dispositivos los interfaces que
queramos.
3 Compensacin de latencia
Con esta opcin podemos compensar las latencias que son desconocidas por el
driver.
4 Opciones
Si marcamos la casilla Permitir modo evento (WaveRT)
aumentaremos el
Ya nos hemos dado cuenta que los tiempos de latencia con ASIO4ALL son mucho mejores
que con el controlador genrico que lleva nuestro ordenador, pero ahora vamos a intentar
reducir la latencia para dejarla comprendida entre 2 y 10 milisegundos.
38
PARTE I
MEMORIA
39
CAPTULO 3
40
PARTE I
MEMORIA
Soldador y estao.
A continuacin mostramos una imagen virtual del montaje, su esquema de montaje y la vista
posterior de un conector MIDI, Figuras 18, 19 y 20. En caso de no realizar correctamente las
conexiones, a parte de que no enviaremos ningn mensaje, podemos daar nuestra placa.
41
CAPTULO 3
42
PARTE I
MEMORIA
mostrar como usar el pin de transmisin (pin 1) para enviar datos MIDI.
Al conectar el circuito a un sintetizador u ordenador este reproducir cada uno de los tonos
correspondientes a todas las octavas del piano de manera secuencial.
En la funcin de setup() fijaremos la velocidad de transmisin, si vamos a enviar los datos
al ordenador mediante un cable MIDI-USB o enviar los mensajes a un sintetizador, fijaremos
la velocidad en 31250bps. En cambio la fijaremos a 115200bps si queremos enviar por el
puerto USB, esto lo explicaremos ms adelante.
En la funcin de loop() tenemos un bucle for() encargado de recorrer las notas desde un
FA#-0 hasta un FA#-5, un total de sesenta notas, aunque podemos enviar ms.
FA#-0
0x1E
D30
FA#-0
0x5A
D90
Un controlador MIDI puede soportar hasta 128 notas o pitches diferentes, esto es porque este
tipo de informacin est en un byte de datos, cuyo bit ms significativo es 0, por lo que
tenemos 128 posibilidades. En la Tabla 2 mostramos la relacin de las notas con su nmero.
OCTAVA
C#
D#
F#
G#
A#
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 110
111
112
113
114
115
116
117
118
119
10
120
121 122
123
124
125
126
127
43
CAPTULO 3
Dentro del bucle for() activaremos y silenciaremos las notas mediante el uso del mensaje
de activacin de nota (noteOn), de tal manera que no necesitaremos crear otra funcin para
desactivar la nota, simplemente mandaremos la funcin noteOn con el volumen a cero.
La forma de invocar a la funcin es la siguiente:
noteOn(0x90,note,0x45);
Cdigo 7: Funcin noteOn.
El primer byte es 90 en sexagesimal, que en binario corresponde a '10010000' el primer uno
indica que es un mensaje de estado, las siguientes tres cifras indican el tipo de mensaje, que
corresponde con el mensaje de activacin de nota. Y las ltimas cuatro cifras corresponden al
canal de transmisin uno.
En el segundo byte a enviaremos el valor de la nota y en el tercer valor enviaremos el
volumen con el que queremos que suene.
Una vez fuera del loop() necesitamos declarar la funcin noteOn() , la cual estar vaca
(tipo void) ya que no queremos que devuelva nada. Cada vez que el bucle principal llame a la
funcin, sta enviar los bytes por el puerto serie al ordenador.
El cdigo fuente se llama MIDI y lo podemos encontrar en la carpeta Cdigos del CD de la
memoria.
El diagrama de flujo del cdigo lo podemos encontrar en el apartado del documento de planos
bajo el nombre de MIDI.
PARTE I
MEMORIA
el equipo se aconseja elegir entre las siguientes velocidades: 300, 600, 1200, 2400, 9600,
14400, 19200, 28800, 38400, 57600 o 115200, sin embargo, podemos especificar cualquier
otra velocidad, pero entonces deberemos comunicarnos a travs de los pines 0 y 1 de la placa.
Es aconsejable que tengamos una velocidad alta de transmisin, aunque de ser alta demasiado
podran perderse algn bit por el camino. Como podemos ver en la Figura 22, , la
comunicacin de la placa con el ordenador funciona perfectamente.
CAPTULO 3
PARTE I
MEMORIA
3.3.5 Comparativa
Hemos probado estas dos maneras de conectar nuestra placa con el ordenador para el envo de
mensajes MIDI. Ambas presentan ciertas ventajas e inconvenientes que dependern ms bien
del uso que se le vaya a dar al controlador.
Si queremos conectar nuestro instrumento a otros dispositivos MIDI y no nicamente a
nuestro ordenador, la mejor eleccin es la compra del cable USB-MIDI, ya que el envo de
datos por ste es a velocidad MIDI estndar, por lo que no existir ningn problema de
compatibilidad con otros dispositivos MIDI.
Por el contrario, si siempre vamos a tocar el instrumento en el mismo ordenador, la opcin de
transmitir por el puerto USB del Arduino es ms que aconsejable. De este modo, nos
evitaramos gastar ms dinero y simplificamos el circuito del instrumento, ya que no
construiramos el conector de salida MIDI OUT. Aunque no podramos conectarlo a otros
dispositivos MIDI ya que careceramos de salida de conector MIDI OUT y la velocidad sera
distinta.
Otro punto a comparar es la instalacin de los drivers o programas que hagan posible la
comunicacin. El cable USB-MIDI lleva incorporado los drivers que se instalan
automticamente, mientras que enviando los datos por el propio USB del Arduino
necesitaremos un programa que virtualice un puerto MIDI en nuestro ordenador, y otro
programa que acte como pasarela y direccione los datos desde el puerto USB donde
tengamos conectada la placa al programa virtualizador de puerto MIDI.
La Tabla 3 muestra una compartiva de ambas posibilidades de conexin:
47
CAPTULO 3
Coste
Velocidad (baud
rate)
Uso
48
Placa Arduino.
Sensor piezoelctrico.
Resistencia 1 Megaohm.
Resistencia 1 Kohm.
Zner 5,1V.
Cables de prototipo.
Placa de pruebas.
PARTE I
MEMORIA
49
CAPTULO 3
50
PARTE I
MEMORIA
En la configuracin pull up, cuando el pulsador est en reposo la salida del pulsador ser
prcticamente la tensin de alimentacin, es decir, tendremos un nivel lgico alto. En el
momento que pulsemos S1 derivaremos toda la corriente a masa, por lo que a la salida
tendremos 0 V, valor lgico bajo.
A la inversa ocurre en la configuracin de pull down, cuando el circuito est en reposo la
cada en tensin ser en la resistencia ser prcticamente 0 V, que consideraremos como un
nivel lgico bajo. Cuando pulsemos S1, la cada de tensin en R1 ser la tensin de
alimentacin, la tensin de salida ser un nivel lgico alto.
En la Figura 27 mostramos el esquema de montaje utilizado.
3.4.3 Cdigo
En la cabecera del cdigo lo primero que haremos ser nombrar los pines que vayamos a usar,
es decir, el pin 0 de las entradas analgicas y el pin nmero 5 de las entradas digitales. Acto
seguido definiremos un umbral, que nos servir para compararlo con la lectura analgica y de
este modo poder discriminarla si no lo supera. El umbral acta como puerta de ruido, evitando
que se filtren seales no deseadas.
Para la lectura de la seal digital necesitaremos dos variables que almacenen el estado del pin,
siendo LOW para un nivel bajo y HIGH para un nivel alto. Nombraremos estas variables
51
CAPTULO 3
52
PARTE I
MEMORIA
estadoActual=digitalRead(BotonA);
if (estadoActual == LOW && estadoAnterior == HIGH);
// pulsacin del botn
noteOn(0x90,nota_bombo,100);
if (estadoActual == HIGH && estadoAnterior == LOW);
// dejar de pulsar
noteOff(0x80,nota_bombo,0);
estadoAnterior = estadoActual;
// igualamos estado actual a estado anterior
Cdigo 9: Lectura digital y envo de notas MIDI.
3.4.3.2 Lectura analgica
53
CAPTULO 3
valor=(analogRead(piezoA)/8);
// adaptamos a margen de [0-127]
if ((valor >= umbral)&&(millis()-tiempo >= debounce){
// ventana temporal de captacin de impacto
// debido al offset acotamos la seal entre los mrgenes
//[10-127]
if(valor + offset <= 126){
noteOn(0x90, nota1, valor + offset);
noteOff(0x80, nota1, 0);
}
if(valor + offset >126){
noteOn(0x90, nota1, 127);
noteOff(0x80, nota1, 0);
}
tiempo=millis();
}
Cdigo 10: Lectura analgica y envo de notas MIDI.
Nombre del cdigo completo: piezo_switch_2ch, el cual lo podemos encontrar en la seccin
de cdigos del CD de la memoria.
Los diagramas de flujo los podemos encontrar en la seccin de planos de este documento bajo
los nombres de Canal Analgico y Canal Digital.
Con la prueba realizada hemos logrado enviar notas MIDI producidas por una seal analgica
y otra digital. En la seccin de cdigos hemos incorporado un cdigo que lee las seis entradas
digitales, el cual lo realizamos mediante un bucle for que se encarga de recorrer todas las
entradas digitales, organizadas en estructura e arrays.
En el apartado de cdigos mostramos todos los mtodos que hemos empleado para realizar la
lectura del pin analgico y enviar los comandos MIDI correspondientes.
PARTE I
MEMORIA
necesidad de conseguir ms entradas. Como mostramos en la Figura 28, una batera con seis
canales ya es suficiente, pero vamos a intentar aumentar el nmero de canales con la ayuda de
un multiplexor. A continuacin mostramos unas imgenes de las posibilidades de aumentar el
nmero de entradas del controlador. En la Figura 29 mostramos una configuracin de doce
canales para una batera.
55
CAPTULO 3
Selector de entradas.
PARTE I
MEMORIA
C y una entrada de inhibicin. Las tres seales binarias seleccionan uno de los ocho canales
para ser encendido y conecta una de las ocho entradas a la salida.
A continuacin procederemos al montaje de este circuito.
Placa Arduino.
Cables prototipo.
Placa de pruebas.
Multiplexor CD4051B.
57
CAPTULO 3
COM OUT/IN
Entrada / Salida comn, la conectaremos a la entrada analgica del Arduino (A0).
INH
Entrada de inhibicin, al conectarla a masa, habilitamos el circuito para su
funcionamiento. En el caso de no conectarla el circuito no funcionar.
VEE
Alimentacin negativa. La conectaremos a masa.
VSS
Masa.
A ,B, C
Entradas de seleccin, las conectaremos a tres pines digitales de Arduino las cuales
estarn definidas como salida.
0...7
Entradas / Salidas independientes. Conectaremos nuestro sensores a cada entrada.
VDD
Alimentacin positiva. La conectaremos a la salida de 5 Vde Arduino.
Conectaremos el multiplexor a Arduino como se indica en la Figura 32:
58
PARTE I
MEMORIA
3.5.5 Cdigo
Para la realizacin de este cdigo lo primero que necesitamos es nombrar los pines que vamos
a utilizar. En nuestro caso, y siguiendo con el esquema anterior definiremos tres pines
digitales que se correspondern con las entradas de seleccin y un pin analgico, que ser por
donde recibamos la informacin multiplexada.
En el setup() configuraremos los pines digitales como salidas.
En el bucle principal implementaremos un cdigo que recorra las ocho posiciones del
multiplexor y para cada caso active los pines de seleccin correspondientes. A continuacin
mostramos el bucle de lectura de un multiplexor de ocho entradas analgicas, aunque slo
hemos representado las dos primeras, Cdigo 11.
59
CAPTULO 3
60
PARTE I
MEMORIA
3.6.1 Charles
Este instrumento se compone de pad y pedal, bsicamente queremos obtener tres sonidos
(notas) de la combinacin de ambos, Tabla 5.
ACCIN
SONIDO
Pisar el pedal
Pedal charles
Charles cerrado
Golpear pad
Charles abierto
Tabla 5: Gama de sonidos charles.
La idea es tener una variable que cambie de una nota a otra dependiendo el estado del
pulsador.
Inicialmente el nmero de nota del pad que queremos que acte como HI HAT es el 46 que se
corresponde con el sonido que produce al estar abierto. Cuando el pulsador est presionado
cambiaremos ese nmero por el 42, que corresponde al sonido de HI HAT cerrado.
61
CAPTULO 3
Pese a que deben actuar como dos sensores independientes, cuando golpeemos uno, tambin
tendremos una seal en el otro por lo que necesitamos implementar un cdigo que elija entre
uno y otro y no reproduzca los dos sonidos a la vez.
Nuestro cdigo consiste en comparar los valores de lectura de ambos sensores y elegir el que
tenga el resultado mayor. Por otro lado deberemos ajustar los niveles de umbral de manera
distinta al resto de los pads, ya que en un principio hemos utilizado el umbral para discriminar
el ruido procedente de otros sensores colocados en otros pads, pero no en el mismo, por lo que
el umbral ser mucho mayor, aunque como todo, depender del msico y su forma de golpeo.
Podemos encontrar el cdigo fuente en la seccin de Cdigos del CD de la memoria con el
nombre de Pad bizona. El diagrama de flujo podemos se encuentra en la seccin de planos del
documento bajo el nombre de Pad bizona.
PARTE I
MEMORIA
el sonido procedente del plato. La idea es construirnos un pulsador que cada vez que lo
activemos enve la nota MIDI especfica de apagado. El pulsador deber estar al lado del plato
y ser cmodo para el msico.
El cdigo implementado ser igual que el utilizado por el pedal de Hi-Hat pero enviando la
nota de cancelacin (choke cymbal) del plato que queramos parar.
En la figura 34 mostramos una imagen en la que podemos apreciar el diseo del pulsador y su
conexin a la salida del pad.
63
CAPTULO 3
Mediante dos pulsadores seleccionaremos la nota que enva el pad, necesitaremos dos
botones, uno para subir de nota y otro para bajar. En la Figura 35 podemos observar el
esquema de montaje.
64
PARTE I
MEMORIA
CDIGO
En la cabecera del programa definiremos las constantes y las variables necesarias para el uso
de un sensor analgico y dos pulsadores. Recordando de apartados anteriores, para utilizar un
pulsador necesitamos dos variables que almacenen su estado y su estado anterior, por lo que al
utilizar dos pulsadores necesitaremos cuatro variables:
estadoActualMas
estadoAnteriorMas
estadoActualMenos
estadoAnteriorMenos
Cdigo 12: Variables de estado necesarias para dos pulsadores.
En el setup() fijaremos la velocidad MIDI e inicializaremos los pines digitales como
entrada. Para este ejemplo no hemos usado las resistencias internas de pull up incorporadas en
Arduino, por lo que hemos realizado un pull down externo.
Una vez ya dentro del bucle principal efectuaremos la lectura del pin analgico y enviaremos
los bytes MIDI correspondientes, a continuacin implementaremos el cdigo necesario para el
uso de un botn que aumente la nota (+) y otro que la baje (-).
Botn (+)
Procederemos de la misma manera salvo en la ltima condicin que ahora ser si la variable
nota es superior a cero. De ser cierto, decrementaremos su valor, y de ser falsa el valor de la
variable ser 127. De esta manera conseguimos que ambos botones estn limitados en el
rango comprendido [0-127].
El cdigo completo se encuentra en la carpeta de Cdigos del CD de la memoria con el
nombre Cambio nota digital. El diagrama de flujo podemos encontrarlo en la seccin de
planos de este documento con el nombre de Cambio nota digital.
65
CAPTULO 3
CDIGO
PARTE I
MEMORIA
Dentro del cdigo tendremos que definir los dos pulsadores y despus del cdigo necesario
para el envo de notas MIDI escribiremos el cdigo que puede verse en el Cdigo 13:
if (digitalRead(botonMas) == HIGH)
{
nota0= nota0 + 12;
delay(1000);}
if (digitalRead(botonMenos) == HIGH)
octava
//decrementamos una
{
nota0= nota0 - 12;
delay(1000);
}
Cdigo 13: Subir y bajar una octava nuestro banco de sonidos.
Es lgico pensar que para subir o bajar una octava deberamos sumar o restar siete, ya que si
repasamos la escala musical, por ejemplo de DO a DO son siete posiciones. Pero si tenemos
en cuenta los semitonos contamos un total de 12. En la Figura 37 aclaramos este concepto.
El cdigo completo se encuentra en la carpeta de Cdigos del CD de la memoria con el
nombre Subir bajar octava. El diagrama de flujo podemos encontrarlo en la seccin de planos
de este documento con el nombre de Subir bajar octava.
67
CAPTULO 3
3.7.3.1 Cdigo
En vez de definir el umbral como constante, crearemos una variable donde se almacene la
lectura del pin analgico del potencimetro. La condicin que debe de cumplir el cdigo para
los sensores es superar el nivel de dicha variable.
El cdigo completo se encuentra en la carpeta de Cdigos del CD de la memoria con el
nombre Variar umbral potencimetro. El diagrama de flujo podemos encontrarlo en la seccin
de planos de este documento con el nombre de Variar umbral potencimetro.
El cdigo fuente completo para la implementacin de una batera electrnica de
once canales analgicos y uno digital se encuentra en la seccin de cdigos del
CD de la memoria bajo el nombre de Batera electrnica 12ch.
68
PARTE I
MEMORIA
Captulo 4
Implementacin del prototipo
En el siguiente captulo vamos a construir un prototipo de batera electrnica con material de bajo
coste para comprobar el buen funcionamiento del cdigo confeccionado en el bloque anterior.
CAPTULO 4
Es necesario conducir los cables del sensor hacia un conector Jack hembra, de esta manera el pad
podr conectarse con cables de audio universal y poder usarse en otros equipos.
4.1.1.1 Materiales
A continuacin mostramos una lista de los materiales que vamos a utilizar para la construccin de
los pads multicapa:
70
Cable audio.
PARTE I
MEMORIA
Lija.
Sierra de calar.
Lo primero que vamos a realizar es dibujar la formas de los pads en todos los materiales.
Empezaremos dibujando en la madera para luego proceder en las gomas.
PASO 2
Una vez tengamos el dibujo plasmado en los materiales procedemos a recortarlos, la goma espuma
y la goma EVA las cortaremos con unas tijeras corrientes, pero para la chapa metlica es necesario
utilizar unas tijeras especiales. Para cortar la madera utilizaremos una sierra de calar. Tanto para
cortar la chapa como la madera es necesario el uso de gafas y guantes de seguridad. En las Figuras
39 y 40 mostramos cortadas las distintas capas.
71
CAPTULO 4
Una vez cortados procederemos a lijar la superficie metlica donde ir pegado el transductor, Figura
41. De esta manera cuando fijemos el sensor con ayuda de pegamento formarn un solo y cuerpo, lo
que significa que hacemos sensible toda la zona de golpeo y no unos pocos centmetros cuadrados.
72
PARTE I
MEMORIA
PASO 3
Cuando tengamos cortada la madera le aplicaremos pintura, Figura 42, de esta manera la
protegemos frente al paso del tiempo y conseguimos un mejor acabado.
PASO 4
Ya que el cable que lleva el sensor incorporado no es lo suficientemente largo, cortaremos unos
trozos de cable preferiblemente de dos colores distintos cada par para que ms adelante hagamos las
conexiones de manera correcta.
Una vez tengamos los cables preparados procederemos a soldarlos al piezo, para ello primero pre
estaaremos los cables y cubriremos la soldadura con el cable termo retrctil. En las Figuras 43, 44
y 45 podemos observar el proceso.
73
CAPTULO 4
74
PARTE I
MEMORIA
Mezclaremos a partes iguales los dos componentes del pegamento epoxi y fijaremos el
piezoelctrico a la chapa metlica, Figura 46. Coloraremos ste de tal manera que los cables queden
visibles.
PASO 5
A continuacin realizaremos los agujeros en la madera para el empotramiento del conector y para
facilitar la salida del cable desde el sensor a los pines de conexin.
Como el conector no es lo suficientemente largo como para empotrarlo en una madera de 1 cm, con
la ayuda de la broca de 20 mm rebajaremos la madera hasta dejarla en torno a unos 5 mm para
luego hacer un agujero con el taladro de 9 mm. En las Figuras 47, 48, 49 y 50 mostramos de el
proceso completo hasta tener instalado el conector en el pad.
75
CAPTULO 4
76
PARTE I
MEMORIA
Como muestra la Figura 51 haremos un pequeo agujero utilizando la broca de 3 mm para pasar los
cables de la zona superior del pad a la parte inferior, donde los soldaremos al conector.
Figura 51: Agujero para cables del sensor. vista trasera del
pad
PASO 6
Pegaremos las capas de la misma manera que hicimos en los pads para timbales con pegamento de
contacto polivalente.
77
CAPTULO 4
PASO 7
Por ltimo, soldaremos los cables procedentes del sensor al conector y fijaremos a la estructura una
grapa de plstico para tubos de PVC de 32 mm. Hasta que no se pruebe la posicin exacta es
conveniente no pegar esta pieza. Mostramos en la Figura 52 un detalle de la grapa de sujecin.
En las Figuras 53, 54, 55 ,56 ,57 y 58. mostramos unas imgenes de los pads terminados.
PARTE I
MEMORIA
79
CAPTULO 4
Cola termofusible.
Pletina en forma de L:
Cable de audio.
Como podemos observar en la Figura 59 mediremos el dimetro de la caja para cortar a medida el
cable .
PARTE I
MEMORIA
PASO 2
Cortaremos dos piezas de mosquitera dejando unos mrgenes superiores al dimetro de la caja,
Figura 60.
Colocaremos el cable y repetiremos el proceso, Figura 61, de este modo creamos una estructura
rgida alrededor del parche con la que los tensores pueden actuar. De no colocar este cable nos
costara mucho o sera imposible tensar correctamente el parche.
81
CAPTULO 4
PASO 5
Recortaremos el parche dejndonos unos centmetros ms para poder envolver con el sobrante el
cable y volveremos a fijar con la pistola de cola, en las Figuras 62 y 63 podemos observar este
proceso.
82
PARTE I
MEMORIA
RESULTADO
En las Figuras 64 y 65 podemos observar el resultado final del parche de malla instalado en la caja.
CAPTULO 4
Ahora que ya tenemos el parche terminado procederemos al montaje del fijador del sensor as como
los componentes electrnicos.
4.1.2.3 Construccin del soporte y fijacin de componentes
PASO 1
Lo primero que haremos ser aprovechar un pequeo agujero que poseen las cajas acsticas para
liberar la presin dentro del timbal, el cual nos servir para empotrar un conector estreo ya que
necesitamos recoger dos seales para procesarlas de manera independiente, en la Figura 66
mostramos el conector empleado donde se indica la asignacin de pines.
PASO 2
Lo siguiente es fabricar el soporte donde ir fijado el piezo que captar las vibraciones de la malla.
La idea es fabricar un mecanismo que presione el parche en algn punto y sea ajustable, en la
Figura 67 podemos observar la colocacin de los materiales para la fabricacin del soporte. Por otro
lado es conveniente que est bien aislado de la madera de la caja, ya que ah tendremos colocado
otro sensor. De este modo tendremos dos zonas diferentes de golpeo, en la malla y en el aro. La
84
PARTE I
MEMORIA
Figura 68 muestra una ranura que hemos hecho para que los cables del sensor no estn sometidos a
la presin ejercida en los impactos. La Figura 69 muestra la instalacin del sensor en el soporte,
como podemos apreciar, hemos colocado un cono de goma EVA para que el sensor no toque
directamente el parche de malla y aumentar de este modo su durabilidad.
85
CAPTULO 4
86
PARTE I
MEMORIA
PASO 3
Una vez tengamos nuestra estructura soldaremos los sensores al conector. El esquema de conexin
se muestra en la figura 70.
PASO 4
Por ltimo atornillaremos la pletina a la caja y fijaremos el segundo sensor con un trozo de cinta
adesiva al aro de la caja, Figura 71.
87
CAPTULO 4
4.2.1 Materiales
A continuacin detallamos un listado de los materiales empleados para su construccin:
88
Madera.
Tuercas (x4).
Pinceles y pinturas.
PARTE I
MEMORIA
4.2.2 Herramientas
A continuacin detallamos un listado de las herramientas empleadas para su construccin:
Soldador y estao.
Pinzas de sujecin.
Tijeras de hojalata.
En primer lugar y de manera anloga a los pads de multicapa dibujaremos en madera nuestro
diseo, para luego proceder a cortar las partes con ayuda de una sierra de calado. En la Figura 73 se
pueden observar las piezas de ambos pedales ya cortadas y preparadas para darles pintura.
89
CAPTULO 4
PASO 2
Una vez cortada la manera la pintaremos de la misma manera que hemos hecho con los soportes
para los pads.
Ahora colocaremos la bisagra entre las piezas que formaran la superficie del pedal que nosotros que
pisaremos, esto proporcionar movimiento al pedal.
PASO 3
Como podemos observar en la Figura 74, en uno de los extremos del gancho de tornillo tenemos
que hacer una especie de maza para golpear la zona con el piezoelctrico, de esta forma
conseguimos distribuir la fuerza ejercida y reducir daos en el sensor y en los materiales que lo
acomodan. Para hacer la maza hemos intercalado capas de goma EVA con unas arandelas hechas a
mano de chapa metlica, las cuales sirven de unin entre el gancho y la goma.
A continuacin haremos un agujero con la broca en la puntera del pedal para pasar el gancho de
tornillo y lo fijaremos con ayuda de dos tuercas.
90
PARTE I
MEMORIA
PASO 4
Con la broca de 20 mm haremos tanto en la base como en la parte de contacto con el pie los
agujeros para colocar el par de muelles de 35 mm, Figura 75. Dependiendo del tamao de los
muelles o de su elasticidad deberemos colocarlos ms cerca de la puntera o menos. Hemos realizado
diferentes pruebas antes de taladrar para poder fijar los muelles en una posicin correcta y que tenga
la sensibilidad adecuada para ser utilizado de manera continua. Es conveniente poner en los
agujeros algo de pegamento para que el muelle permanezca seguro, Figura 76.
91
CAPTULO 4
PASO 5
A continuacin vamos a pegar el taln a la base del pedal. Como podemos observar en la Figura 77,
con ayuda de unas pinzas de sujecin mantendremos unidas ambas partes hasta que se haya secado
por completo.
Para hacer la estructura de la zona de golpeo vamos a cortar unos cuadrados de goma EVA y de
chapa metlica. El sensor lo fijaremos a la parte inferior de la chapa con pegamento Epoxi y para
las dems capas utilizaremos pegamento de contacto polivalente.
En la Figura 78 mostramos una imagen de la estructura de la zona de golpeo en la que se aprecian
las diferentes capas as como la colocacin del sensor y del conector de forma provisional.
PARTE I
MEMORIA
PASO 7
Por ltimo fijaremos con pegamento de contacto el conector y soldaremos los cables del sensor.
Cubriremos las soldaduras con funda termo retrctil para asegurar las conexiones. Y pegaremos
unas gotas de material antideslizante por la parte de abajo de la base del pedal, de esta manera
cuando golpeemos el pedal no se mover y reduciremos sus vibraciones.
En la Figura 79 mostramos una imagen del pedal ya terminado.
93
CAPTULO 4
PASO 1
Una vez tengamos todos los componentes preparados procederemos a hacer los agujeros de
sujecin para los muelles, que en este caso irn fijados casi en la zona de la puntera. Este tipo de
muelles es algo ms pequeo que los del pedal de bombo y al estar ms cerca de la punta del pedal
el recorrido de ste es menor, lo que implicar una menor separacin entre las zonas de contacto.
En la parte de abajo de la puntera rebajaremos la madera para que los cables de la zona superior de
contacto tengan sitio y no estn aplastados.
En la Figura 81 podemos observar una fotografa donde se muestra los agujeros de los muelles y la
hendidura para los cables.
94
PARTE I
MEMORIA
PASO 2
Cuando tengamos los agujeros terminados los llenaremos unas tres cuartas partes de pegamento de
contacto colocaremos los muelles en su sitio y dejaremos secar. En la Figura 82 mostramos un
detalle de los muelles del charles, donde ya hemos colocado uno de los dos.
95
CAPTULO 4
PASO 3
Para fabricar las zonas de contacto hemos utilizado unos piezoelctricos que estaban estropeados,
de este modo podemos soldar el cable en el polo negativo de la parte superior y usar la inferior para
hacer contacto con el otro piezo, colocado de la misma manera.
Una vez realizado procederemos a soldar los cables al conector. Para finalizar pondremos unas
gotas antideslizantes en la base del pedal para que evitar desplazamientos cuando se est usando.
Al realizar algunas pruebas con el pedal ya terminado concluimos que los muelles an tenan
mucho recorrido, lo que en consecuencia provocaba dificultades a la hora de pulsarlo. La solucin
empleada ha sido pegar una tuerca de hierro al contacto inferior, ahora el recorrido del pedal es
menor y funciona correctamente.
En la Figura 83 mostramos una imagen del pedal ya terminado.
96
PARTE I
MEMORIA
4.3.1 Materiales
A continuacin se detallan los materiales empleados para la construccin del stand:
97
CAPTULO 4
4.3.2 Montaje
Para realizar su construccin cortaremos las piezas a la medida adecuada y despus ejerciendo un
poco de presin en cada conexin, montaremos la estructura. En la Figura 85 podemos observar
unas fotografas de su montaje.
Y como resultado mostramos en las Figuras 86 y 87 el stand terminado con todos los pads
colocados, hemos decidido utilizar este material para realizar la estructura porque aparte de su
resistencia, precio, peso, etc. podemos plegarlo de tal manera que no ocupe casi sitio.
98
PARTE I
MEMORIA
99
CAPTULO 4
4.4.1 Materiales
A continuacin mostramos un listado de los materiales empleados para la construccin del mdulo
controlador.
Resistencia 1 Mohmio (x11).
Led rojo.
Led blanco.
100
PARTE I
MEMORIA
4.4.2 Herramientas
Soldador y estao.
Taladro y brocas.
Destornillador.
Pistola de cola.
4.4.3 Montaje
Una vez tengamos todo el material preparado vamos a proceder al montaje en una caja especfica
que ofrecer un diseo sencillo y cmodo para el usuario. Como en el resto de apartados del
captulo cuatro realizaremos la explicacin en una serie de pasos acompaados con fotografas.
PASO1
Como podemos observar en las Figuras 89 y 90, colocaremos los circuitos de proteccin a lo largo
de la placa de prototipo y con la ayuda del soldador de estao fijaremos los componentes. Los leds
rojos de la Figura 89 indican el espacio que va a ocupar el Arduino dentro de la placa.
101
CAPTULO 4
PASO2
A continuacin soldaremos el zcalo del multiplexor, Figura 91, debemos de tener mucho cuidado
ya que los pines estn muy cerca y podran unirse las pistas. Seguiremos con el proceso de
construccin soldando los leds de estado y la resistencia de 220 ohmios para la salida MIDI.
102
PARTE I
MEMORIA
PASO3
soldaremos todos los conectores a sus circuitos de proteccin y cablearemos hacia Arduino, Figura
92.
PASO4
Con la ayuda del taladro realizaremos los agujeros para los conectores Jack, MIDI, USB y leds de
actividad. En la Figura 93 mostramos el resultado.
CAPTULO 4
PASO 5
Situaremos los conectores en sus cavidades. Como puede apreciarse en la Figura 94, tenemos un
total de once conectores Jack, cinco por un lado y seis por otro, de esta manera equilibraremos el
peso del mdulo y ser ms estable a la hora de tener todos los cables conectados.
104
PARTE I
MEMORIA
105
PARTE I
MEMORIA
Captulo 5
Conclusiones y lneas futuras
En este captulo final describimos el balance de objetivos, las posibles mejoras del proyecto y
las conclusiones del trabajo realizado.
107
CAPTULO 5
por la necesidad de no
incrementar el coste del instrumento no hemos llevado a cabo. Aunque no tienen cabida en
este trabajo, si pueden realizarse como mejoras e implementaciones ms completas en el
futuro.
Elaboracin de una placa PCB propia en vez de usar una de prototipo, dando un
carcter ms profesional al controlador.
Elaborar una aplicacin propia que permita el control de nuestro instrumento desde un
ordenador.
108
PARTE I
MEMORIA
En este instrumento solamente estamos utilizando uno de los diecisis canales que
incorpora el protocolo MIDI, una idea interesante podra ser la de asignar a otros
canales ciertas funciones para poder usar algunos pads con otros propsitos, como por
ejemplo servir de controladores de efectos o funcionar de manera independiente de la
batera como otro instrumento.
Hemos diseado un prototipo de instrumento cuyo uso es musical, pero estara muy
bien construir una mesa controladora basndonos en las tecnologas empleadas para su
uso en produccin audiovisual, la cual en vez de enviar mensajes de notas enve
mensajes de control, disponiendo para ello de todo un conjunto de botones,
potencimetros y potencimetros deslizantes.
Disear un instrumento MIDI usando sensores distintos a los usados, como pueden ser
fotodiodos, acelermetros, lseres,etc. y que a parte cuente con un diseo nada
convencional.
5.3 Conclusiones
Una de las caractersticas de este TFG, es que se trata de un proyecto vivo y las posibilidades
de mutacin son infinitas. Este trabajo se presentaba como una apuesta distinta a los proyectos
habituales, ya que mezcla lo tcnico con lo artstico. Una vez efectuado el balance de
objetivos y las posibles lneas futuras podemos afirmar haber alcanzado unos resultados
satisfactorios, tanto tericos como prcticos.
Pese a tener ya ms de treinta aos, el protocolo MIDI sigue siendo el medio de comunicacin
ms comn entre instrumentos digitales e interfaces. La gran mayora de productores
musicales o simplemente aficionados usan este protocolo, por lo que consideramos un acierto
haberlo usado.
109
CAPTULO 5
Comprar este tipo de instrumentos puede resultar bastante caro, por lo que este prototipo
puede facilitar el aprendizaje a personas que no quieran o no necesiten gastarse tanto dinero.
Adems puede tener tanto un uso didctico que permita el estudio de la msica y ms
concretamente de la percusin.
Con todos los conocimientos que hemos adquirido a lo largo del trabajo y que han sido
necesarios para la implementacin del prototipo creemos que es un buen mtodo para
aprender conceptos sobre programacin de microcontroladores, de electrnica y de manejo
de software de audio profesional.
Este proyecto ha supuesto un reto y a su vez un inicio para seguir aprendiendo e investigando
en el campo de la programacin de microcontroladores y su uso para disear herramientas de
experimentacin sonora.
110
PARTE II
PLANOS
112
PARTE II
PLANOS
113
114
PARTE II
PLANOS
115
116
PARTE II
PLANOS
117
118
PARTE II
PLANOS
119
120
PARTE II
PLANOS
121
122
PARTE II
PLANOS
123
124
PARTE II
PLANOS
125
126
PARTE II
PLANOS
127
128
PARTE II
PLANOS
129
130
PARTE II
PLANOS
131
PARTE III
PLIEGO DE CONDICIONES
PARTE III
PLIEGO DE CONDICIONES
Hardware
Ordenador
Ordenador porttil HP Pavilion Entertainment:
Plataforma de desarrollo
Placa de desarrollo Arduino Uno Rev.3:
Microcontrolador Atmega328.
Tensin de funcionamiento 5 V.
Voltaje de entrada (recomendado) 7-12 V.
Voltaje de entrada (lmites) 6-20 V.
Pines digitales de E/S 14 (de los cuales 6 proporcionan PWM).
Pines de entrada analgicos 6.
Corriente continua para los pines de E/S 40 mA.
Corriente DC para el pin 3,3 V 40 mA.
32KB de Memoria Flash, de los cuales 0,5 KB utilizados por gestor de arranque.
SRAM 2 KB.
EEPROM 1 KB.
Velocidad de reloj 16 MHz.
La longitud y la anchura mxima de 6,85 cm y 5,3 cm respectivamente.
4 orificios para atornillar la placa a una superficie.
Peso 40g.
Microcontrolador
La placa de desarrollo utilizada en este proyecto est basada en el microcontrolador
ATMega328P, que pertenece a la familia AVR de la casa Atmel.
PARTE III
136
PLIEGO DE CONDICIONES
PARTE III
PLIEGO DE CONDICIONES
Multiplexor
El multiplexor empleado es el CD4051B de Texas Instruments.
8 canales multiplexados mediante tres entradas de control, A, B, C y una entrada de
inhibicin.
Nivel de entrada digital de 3 a 20 V.
Nivel de entrada analgica 20 pp.
Conversin a lgica de niveles para direccionamiento digital de seales al conmutador
analgico.
Placa de prototipo
La placa utilizada para el prototipo es una Europlaca de un agujero, de la casa Velleman.
100 x 160 mm.
1 cara.
Epoxi FR4.
Cobre desnudo recubierto de fundente.
Dimensiones de los taladros: 1 mm.
Cable USB
137
PARTE III
PLIEGO DE CONDICIONES
Cable microfnico
Cable USB-MIDI
138
PARTE III
PLIEGO DE CONDICIONES
Conector DIN 5
Sensor piezoelctrico
Switch
Dimensiones: 6 x 6 mm.
Altura: 5 mm.
Valores: 12 Vdc 50 mA.
Resistencia De Aislamiento: 100 Mohm 250 Vdc.
Tensin No Disruptiva : 100 Vac 1 Minuto.
Resistencia De Contacto: 100 mohm.
Temperatura De Soldadura: 255 C Para mx. 5 segundos.
Vida Mecnica: 500000 Ciclos.
Vida Elctrica: 300000 Ciclos.
Rango De Temperatura Ambiental: De -25 C a +70 C
Rango De Humedad Ambiental: 85% RH.
Fuerza De Operacin: De 130 A 160 30 gf.
139
PARTE III
Resistencia
Potencia: 0.25 W.
Rango de Resistencia: de 1e a 22 m (serie E12).
Temperatura De Funcionamiento: De -55 C a +155 C.
Tolerancia: 5%.
Tensin De Funcionamiento: 250 Vmx.
140
Tensin: 5,1 V.
Prefijo Referencia: Za.
Disipacin: 1,3 W.
Tolerancia: 5%.
Caja: Figura 2.
PLIEGO DE CONDICIONES
PARTE III
PLIEGO DE CONDICIONES
Herramientas
Detallamos de forma breve las herramientas y materiales utilizados.
Polmetro.
Soldador.
Estao (60/40).
Tubo termo retrctil.
Madera TDM 10 mm.
Chapa metlica.
Goma EVA 2 mm y 7 mm.
Espuma de poliuretano 10 mm.
Tubo PVC 32 mm.
Codo PVC 32 mm.
Conector en forma de T PVC 32 mm.
Tapn PVC 32 mm.
Cinta de carrocero.
Cinta aislante.
Pegamento epoxi.
Pegamento polivalente.
Pegamento rpido.
Tijeras hojalata.
Tijeras multifuncin de 230 mm..
Cutter. 18 mm.
Lija madera fina.
Alicates de corte.
Alicates de punta plana.
Bisagra.
Tornillo y tuercas 0,8 mm.
Pletina en forma de L de 0,8 mm.
Gancho de tornillo 0,8 mm.
Sierra de calar.
Hoja de sierra de calar madera.
Sierra multifuncin.
Taladro Black and Decker KR654CRES.
Brocas madera.
Grapas 32 mm.
141
PARTE III
PLIEGO DE CONDICIONES
Software
Sistema operativo
Windows 7 Home Premium
Arduino IDE
Entorno de cdigo abierto para plataformas Arduino. Funciona tanto en Windows como Mac
OS X o Linux. El entorno est escrito en Java y basado en Processing.
ASIO4ALL
Controlador universal para audio WDM que nos permite el uso de aplicaciones profesionales
de audio y reducir los tiempos de latencia,
MIDI-OX
Herramienta de diagnstico de actividad MIDI capaz de generar, grabar, convertir y
monitorizar cualquier tipo de evento.
Hairless
Programa de cdigo abierto que nos permite enviar datos MIDI por el puerto USB.
LoopBe
Aplicacin que permite transferir datos MIDI entre programas informticos. Crea un canal
virtual que conecta un puerto de entrada MIDI con cualquier tipo de programa.
142
PARTE IV
PRESUPUESTO
PARTE IV
PRESUPUESTO
Detallamos un presupuesto completo del coste total del proyecto. El presupuesto lo hemos
dividido en cuatro secciones:
1. Hardware utilizado para la realizacin del proyecto, donde se especifican los equipos y
los materiales electrnicos.
2. Herramientas y materiales de construccin.
3. Costes del trabajo personal y de la produccin de este proyecto.
4. Un presupuesto global de los costes del proyecto, el cual es la acumulacin de los
presupuesto anteriores.
HARDWARE
Concepto
Fabricante Uds.
HP
58,33
58,33
Arduino
22,15
22,15
Wisher
18,35
18,35
Placa de prototipo
- 100 x 160mm.
- 1 cara.
Velleman
5,85
5,85
Caja de plstico
Velleman
6,24
6,24
Cables To
Go
6,37
6,37
Cable microfnico.
Velleman
20
0,4
PARTE IV
PRESUPUESTO
Concepto
Fabricante Uds.
Velleman
0,79
0,79
Velleman
9,4
9,4
Cable MIDI-USB
Leem
15,8
15,8
ValueLine
22
0,39
8,69
ValueLine
22
0,59
12,98
Neutrik
1,98
1,98
ValueLine
0,71
0,71
ValueLine
0,39
0,39
Sensor piezoelctrico
RS
11
Components
1,5
16,5
Multiplexor CD4051B
TI
0,71
0,71
Switch
RS
2
Components
0,4
0,8
Resistencia
RS
13
Components
0,04
0,51
Diodo Zener
RS
12
Components
0,4
4,8
Subtotal Hardware
199,34
241,20
146
PARTE IV
PRESUPUESTO
HERRAMIENTAS Y MATERIALES DE
CONSTRUCCIN
Concepto
Fabricante
Precio total ()
Polmetro
Velleman
12,56
12,56
Soldador
Velleman
10,19
10,19
Estao
Velleman
2,13
2,13
Velleman
0,63
0,63
MDF
3,63
10,9
Chapa metlica
8,45
8,45
Goma EVA
Gerimport
5,14
5,14
Goma EVA
Gerimport
0,9
0,9
7,9
7,9
EPE
2,25
EPE
0,56
3,36
EPE
16
0,92
14,79
EPE
10
0,5
Cinta de carrocero
EM Home
0,4
0,4
Cinta aislante
EMhome
0,6
0,6
Pegamento epoxi
Supertite
0,79
0,79
Pegamento polivalente
Novopren
5,33
5,33
Pegamento rpido
Supertite
0,79
0,79
Tijeras hojalata
EM Ferr
3,55
3,55
Tijeras multifuncin
Bricotrap
1,3
1,3
Cutter
Bricotrap
0,79
0,79
Debray
0,35
0,35
Alicates de corte
Bricotrap
1,5
1,5
Bricotrap
1,2
1,2
PARTE IV
PRESUPUESTO
Concepto
Fabricante
Precio total ()
Bisagra
Bricotrap
0,4
0,8
Bricotrap
1,9
1,9
Pletina en forma de L
Bricotrap
0,6
0,6
Gancho de tornillo
Bricotrap
1,4
1,4
Sierra de calar
Usada en este proyecto: (10%)
Bosch
4,35
4,35
Ratio
1,65
1,65
Sierra mulifuncin
Bricotrap
1,55
1,55
Taladro
Utilizado en este proyecto:
(10%)
Black and
Decker
4,9
4,9
Brocas
Amig
3,15
3,15
Grapas 32mm
Lexman
2,88
2,88
130,70
158,14
148
PARTE IV
PRESUPUESTO
PROYECTO
Concepto
N de horas
/hora
Total
Honorarios aprendizaje
240
15
3600
Honorarios ingeniero
60
55
3300
50
Subtotal TFG
6950
8409,5
149
PARTE IV
PRESUPUESTO
PRESUPUESTO GLOBAL
Concepto
Total
Hardware
199,34
130,7
Proyecto
6950
Subtotal
7280,04
IVA (21%)
1528,8
Total
8808,84
150
BIBLIOGRAFA
BIBLIOGRAFA
151
BIBLIOGRAFA
Salahovic, A (2009). Edrum en URL: http://www.edrum.info/ (Recuperado el 7 de
abril de 2014).
Universidad Nacional de San Luis (17 de febrero 2005). Norma MIDI en URL:
http://prodmusical.unsl.edu.ar/apuntes/Norma%20MIDI.pdf (Recuperado el 7 de abril
de 2014).
Wikibooks (26 junio 2013). C++ Programming, Coding style conventions en URL:
http://en.wikibooks.org/wiki/C%2B%2B_Programming/Programming_Languages/C
%2B%2B/Code/Style_Conventions (Recuperado el 15 de junio de 2014).
152
ANEXO 1
153
ESTRUCTURA DE UN SKETCH
La estructura bsica del lenguaje de programacin de Arduino se compone de al menos dos
partes, las cuales encierran bloques que contienen declaraciones, estamentos o instrucciones.
void setup()
{
estamentos;
}
void loop()
{
estamentos;
}
Donde setup() es la parte encargada de recoger la informacin y loop() es la que
contiene el programa que se ejecutar cclicamente. Ambas funciones son necesarias para que
el programa funcione.
154
ANEXO 1
Setup()
Una vez llamada la funcin setup(), la funcin loop() se ejecuta de manera cclica, lo
cual hace que el programa responda continuamente ante los eventos que se produzcan.
void loop()
{
digitalWrite(pin, HIGH); // pone en uno (5v) el pin
delay(1000); // espera un segundo
digitalWrite(pin, LOW); // pone en cero (0v) el pin
delay(1000);
}
Funciones
Son unos bloques de cdigo con un nombre y un conjunto de instrucciones que son ejecutadas
cuando son llamadas. Normalmente las funciones se declaran asociadas a un tipo de valor.
Este valor ser el que devolver la funcin, por ejemplo int se utilizar cuando la funcin
devuelva un dato numrico de tipo entero. En ocasiones las funciones no devuelven ningn
valor, por lo que se colocar delante la palabra void que significa funcin vaca.
Una vez declarado el tipo de dato que devolver la funcin se debe escribir el nombre de la
funcin y entre parntesis los parmetros que se le debern pasar para que se ejecute.
155
Las llaves definen el principio y final de un bloque de instrucciones. Una llave de apertura
siempre debe ir seguida de una de cierre, de no ser as el compilador dar errores.
En el entorno de programacin de Arduino existe una herramienta para comprobar el total de
llaves.
; punto y coma
Se utiliza para separar instrucciones, tambin se utiliza para separar elementos en una
instruccin de tipo bucle for.
Si no se usa correctamente puede dar lugar a errores de programacin.
/*...*/ bloque de comentarios
Tambin llamados comentarios multi-lnea son reas de texto que el programa ignora. Se
utiliza para comentar o describir el cdigo de tal manera que pueda servir de ayuda para
comprender el uso del programa.
// lnea de comentarios
Una lnea de comentario empieza con // y termina con la siguiente lnea del cdigo. Al igual
que los comentarios de bloque, tambin son ignoradas por el programa y no ocupan espacio
en memoria.
VARIABLES
Una variable es una manera de nombrar y almacenar un valor numrico para su posterior uso
en el programa. Una variable deber ser declarada y, opcionalmente, asignarle un valor.
Es conveniente que las variables tomen nombres descriptivos para hacer el cdigo ms
legible. Ejemplos de ello pueden ser piezoA, pulsador Una variable puede ser cualquier
palabra menos las que son reservadas en el entorno de Arduino.
156
ANEXO 1
Declaracin de variables
Todas las variables deben declararse para que puedan ser utilizadas. Para declarar una
variable se empieza por definir su tipo, int (entero), long (largo), float (coma flotante)...
A continuacin un ejemplo de una declaracin de variable, de tipo entero y a la cual se le
asigna un valor inicial igual a cero.
int entradaVariable = 0;
Utilizacin de una variable
Una variable puede ser declarada al inicio del programa antes del setup(), a nivel local o
dentro de un bloque, como en los bucles if o for... Dependiendo de donde se declara se
determinar su mbito de aplicacin, o la capacidad de ciertas partes de un programa para
hacer uso de ella.
Las variables pueden ser globales o locales.
Una variable global puede utilizarse por cualquier funcin o estamento del programa y se
declarar antes del comienzo de ste, es decir, antes del setup().
Una variable local es aquella que se define dentro de una funcin o como parte de un bucle,
obviamente slo puede usarse dentro de la funcin que se declar, por lo tanto, es posible
tener dos o ms variables con el mismo nombre.
En el siguiente ejemplo se muestra cmo declarar unas variables y la visibilidad de stas
dentro de las funciones.
int value;
void setup()
{
}
void loop()
{
for (int i=0; i<20;)
{
i++;
}
float f;
}
157
TIPOS DE DATOS
A continuacin mostramos los tipos de datos con los que trabajar:
byte
Este formato se aplica a los nmeros decimales. Tiene mayor resolucin que los de 32 bits. Al
no ser exactos pueden producir resultados extraos y los clculos son ms lentos, por lo que
su uso debe evitarse si el posible.
Arrays
Conjunto de valores a los que se accede con un nmero ndice. El primer valor de la matriz se
indica con el ndice cero. Un array debe ser declarado y opcionalmente asignar valores a cada
posicin antes de ser usado.
int miArray[] = {valor0, valor1, valor2...};
Tambin es posible declarar una matriz indicando el tipo de datos y el tamao, para
posteriormente asignar valores a una posicin especfica.
int
miArray[5];
//declara un
//posiciones
array
de
enteros
de
158
ANEXO 1
Las matrices se utilizan a menudo para estamentos tipo bucle, donde la variable de incremento
del contador del bucle se usa como ndice o puntero del array.
ARITMTICA
Los operadores aritmticos incluidos en el entorno de programacin son suma, resta,
multiplicacin y divisin. Estos devuelven la suma, diferencia, producto o cociente
(respectivamente) de dos operandos.
Asignaciones compuestas
Las asignaciones compuestas combinan una operacin aritmtica con una variable asignada.
Estas son comnmente utilizadas en los bucles.
Operadores de comparacin
Las comparaciones de una variable o constante con otra se utilizan con frecuencia en las
estructuras condicionales del tipo if para testear si una condicin es verdadera.
Operadores lgicos
Los operadores lgicos son usualmente una forma de comparar dos expresiones y devolver un
VERDADERO o FALSO dependiendo del operador. Existen tres operadores lgicos, AND
(&&), OR (||) y NOT (!), que a menudo se utilizan en estamentos de tipo if.
CONSTANTES
El lenguaje de programacin de Arduino tiene unos valores predeterminados, que son
llamados constantes. Se utilizan para hacer los programas mas fciles de leer. Las constantes
se clasifican en grupos.
Cierto/falso (true/false)
Estas son constantes booleanas que definen los niveles HIGH (alto) y LOW (bajo) cuando estos
se refieren al estado de las salidas digitales. FALSE se asocia con 0 (cero), mientras que
TRUE se asocia con 1, pero TRUE tambin puede ser cualquier otra cosa excepto cero. Por lo
tanto, en sentido booleano, -1, 2 y -200 tambin se define como TRUE.
159
Estas constantes definen los niveles de salida altos o bajos y se utilizan para la lectura o la
escritura digital en los pines. ALTO se define como en la lgica de nivel 1, ON, o 5 voltios,
mientras que BAJO es lgica nivel 0, OFF, o 0 voltios.
digitalWrite(13, HIGH); // activa la salida 13 con un nivel
// alto (5v.)
Input/output
Estas constantes son utilizadas para definir, al comienzo del programa, el modo de
funcionamiento de los pines mediante la instruccin pinMode de tal manera que el pin puede
ser una entrada INPUT o una salida OUTPUT.
pinMode(13, OUTPUT); // designamos que el PIN 13 es una
//salida.
CONTROL DE FLUJO
if (si condicional)
160
ANEXO 1
if else (si.. sino ..)
161
La declaracin for se usa para repetir un bloque de sentencias encerradas entre llaves un
numero determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve
a testear la condicin. La declaracin for tiene tres partes separadas por (;), vemos el
ejemplo de su sintaxis:
for (inicializacin; condicin; expresin)
{
Instrucciones;
}
while
Un bucle del tipo while es un bucle de ejecucin continua mientras se cumpla la expresin
colocada entre parntesis en la cabecera del bucle. La variable de prueba tendr que cambiar
para salir del bucle. La situacin podr cambiar a expensas de una expresin dentro el cdigo
del bucle o tambin por el cambio de un valor en una entrada de un sensor.
while (unaVariable ?? valor)
{
ejecutarSentencias;
}
do while
El bucle do while funciona de la misma manera que el bucle while, con la salvedad de
que la condicin se prueba al final del bucle, por lo que el bucle siempre se ejecutara al menos
una vez.
do
{
Instrucciones;
} while (unaVariable ?? valor);
162
ANEXO 1
E/S DIGITALES
pinMode(pin, mode)
En Arduino los terminales estn configurados por defecto como entradas, por lo que no es
necesario conjugarlos si se van a usar como entradas. Bajo el punto de vista elctrico, estos
pines quedan en estado de alta impedancia.
Dichos pines a nivel interno tienen una resistencia de 20 Kohm a las que se puede acceder de
la siguiente manera:
pinMode(pin, INPUT);
digitalWrite(pin, HIGH);
internas
//
activa
las
entrada
resistencias
Las resistencias internas se utilizan normalmente para conectar interruptores a las entradas.
Los pines configurados como salida se encuentran en un estado de baja impedancia y pueden
proporcionar una corriente de 40 mA a otros dispositivos y circuitos. Esta corriente es
suficiente para alimentar por ejemplo un diodo LED pero no lo suficiente como para
alimentar motores o rels.
DigitalRead (pin)
Lee el valor de un pin definido como digital dando un resultando HIGH (alto) o LOW (bajo).
Valor = digitalRead(Pin);
digitalWrite(pin, value)
Enva a un pin definido como salida un valor alto o bajo (poniendo 1 o 0 la salida).
digitalWrite(pin, HIGH);
163
E/S ANALGICAS
analogRead(pin)
Lee el valor de un determinado pin definido como entrada analgica con una resolucin de
diez bits. El rango de valor ser de 0 a 1023.
valor = analogRead(pin);
analogWrite(pin, value)
//
escribe
'valor'
en
el
//'pin' definido como analgico
Si enviamos el valor 0 genera una salida de 0 voltios en el pin especificado, un valor de 255
genera una salida de 5 voltios de salida en el pin especificado.
// espera 1 segundo
milis()
164
ANEXO 1
MATEMTICAS
min(x, y)
Calcula el mnimo de dos nmeros para cualquier tipo de datos devolviendo el ms pequeo.
Valor = min(valor, 100); //asigna a valor el ms pequeo de los
//nmero especificados.
Max(x, y)
Calcula el mximo de dos nmeros para cualquier tipo de datos devolviendo el nmero mayor
de los dos.
Valor = max(valor, 100); //asigna a valor el mayor de los dos
//nmeros (valor y 100), de
//esta manera nos aseguramos que valor
//ser como mnimo 100.
COMUNICACIN SERIE
Serial.begin(rate)
Abre el puerto serie y fija la velocidad en baudios para la transmisin de datos en serie. Un
valor tpico de uso es de 9600 y en el protocolo MIDI es de 31250.
Cuando existe comunicacin serie los pines digitales 0 y 1 (RX y TX respectivamente) no
pueden utilizarse al mismo tiempo.
void setup()
{
Serial.begin(9600);
}
bps
Serial.println(data)
Imprime los datos en el puerto serie, seguido por un retorno de carro automtico y salto de
lnea. Este comando toma la misma forma que Serial.print(), pero es ms fcil para la
lectura de los datos en el Monitor Serie del software.
Serial.println(analogValue);
// enva el valor
//'analogValue' al puerto
165
Vuelca o enva un nmero o una cadena de caracteres, al puerto serie. Dicho comando puede
tomar diferentes formas, dependiendo de los parmetros que utilicemos para definir el
formato de volcado de los nmeros.
Parmetros
data: el nmero o la cadena de caracteres a volcar o enviar.
data type: determina el formato de salida de los valores numricos
(decimal, octal, binario, etc...) DEC, OCT, BIN, HEX, BYTE , si no se pide
nada se devuelve en ASCII.
Serial.avaible()
Devuelve un entero con el numero de bytes disponibles para leer desde el buffer serie, o 0 si
no hay ninguno. Si hay algn dato disponible, SerialAvailable() sera mayor que 0. El
buffer serie puede almacenar como mximo 64 bytes.
Serial.Read()
Lee o captura un byte (un carcter) desde el puerto serie. Devuelve el siguiente byte (carcter)
desde el puerto serie, o -1 si no hay ninguno.
166