You are on page 1of 186

Resumen

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

3.3 Envo de datos MIDI.................................................................................................40


3.3.1 MIDI OUT Hardware.........................................................................................40
3.3.2 Primer cdigo MIDI...........................................................................................43
3.3.3 Puerto MIDI virtual ...........................................................................................44
3.3.4 Cable MIDI-USB...............................................................................................46
3.3.5 Comparativa.......................................................................................................47
3.4 Envo de datos mediante sensores y pulsador ...........................................................48
3.4.1 Hardware requerido...........................................................................................48
3.4.2 Construccin del circuito...................................................................................49
3.4.3 Cdigo................................................................................................................51
3.4.3.1 Lectura digital ...........................................................................................52
3.4.3.2 Lectura analgica ......................................................................................53
3.5 Aumento del nmero de canales................................................................................54
3.5.1 Definicin de multiplexor .................................................................................55
3.5.2 Multiplexor / Demultiplexor analgico CD4051B............................................56
3.5.3 Hardware requerido...........................................................................................57
3.5.4 Construccin del circuito...................................................................................57
3.5.5 Cdigo................................................................................................................59
3.6 Funciones especiales Pads.........................................................................................60
3.6.1 Charles...............................................................................................................60
3.6.2 Pad bizona..........................................................................................................61
3.6.3 Silencio de plato.................................................................................................62
3.7 Funciones especiales usuario.....................................................................................63
3.7.1 Cambiar el sonido de un Pad.............................................................................63
3.7.1.1 Mediante botones de seleccin (Digital)....................................................64
3.7.1.1 Mediante potencimetros (analgico)........................................................65
3.7.2 Subir y bajar de octava nuestro banco de sonidos.............................................66
3.7.3 Variar el umbral con potencimetro ..................................................................67
3.7.3.1 Cdigo........................................................................................................68
Captulo 4
Implementacin del prototipo..............................................................................................69
4.1 Diseo de los pads.....................................................................................................69
4.1.1 Pad multicapa ....................................................................................................69
4.1.1.1 Materiales...................................................................................................70
4.1.1.2 Construccin pads multicapa.....................................................................71
4.1.2 Pad de malla............................................................................................................80
4.1.2.1 Materiales...................................................................................................80
4.1.2.2 Construccin del parche.............................................................................80
4.1.2.3 Construccin del soporte y fijacin de componentes.................................84
4.2 Pedales de la batera..................................................................................................88
4.2.1 Materiales...........................................................................................................88
4.2.2 Herramientas......................................................................................................89
4.2.3 Pedal de bombo..................................................................................................89
4.2.4 Pedal de charles..................................................................................................94
4.3 Diseo del stand y colocacin de pads......................................................................97
4.3.1 Materiales...........................................................................................................97
4.3.2 Montaje..............................................................................................................98
4.4 Mdulo controlador ................................................................................................100
4.4.1 Materiales ........................................................................................................100
4.4.2 Herramientas....................................................................................................101
X

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

ndice de cdigos fuente


Cdigo 1: Funcin para fijar velocidad de transmisin serie....................................................31
Cdigo 2: Variable de almacenamiento para lectura analgica................................................31
Cdigo 3: Impresin por monitor serie de la variable sensorValue..........................................31
Cdigo 4: Proceso de escalado voltaje analgico.....................................................................31
Cdigo 5: Definicin de constantes y variables para apartado 3.1.3........................................34
Cdigo 6: Lectura analgica para apartado 3.1.3......................................................................34
Cdigo 7: Funcin noteOn........................................................................................................42
Cdigo 8: Funcin de setup() para apartado 3.4.......................................................................51
Cdigo 9: Lectura digital y envo de notas MIDI. ...................................................................51
Cdigo 10: Lectura analgica y envo de notas MIDI..............................................................52
Cdigo 11: Bucle para recorrer las posiciones del multiplexor................................................58
Cdigo 12: Variables de estado necesarias para dos pulsadores...............................................63
Cdigo 13: Subir y bajar una octava nuestro banco de sonidos................................................65

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

Figura 47: Vista posterior agujero 20 mm.................................................................................74


Figura 48: Vista posterior agujero para conector terminado.....................................................74
Figura 49: Vista posterior conector...........................................................................................74
Figura 50: Vista frontal del conector ya instalado....................................................................75
Figura 51: Agujero para cables del sensor. vista trasera del pad...............................................75
Figura 52: Detalle grapa sujecin.............................................................................................76
Figura 53: Pad de plato, vista frontal........................................................................................76
Figura 54: Pad de plato, vista trasera........................................................................................77
Figura 55: Pad de timbal, vista frontal......................................................................................77
Figura 56: Pad de timbal, vista trasera......................................................................................78
Figura 57: Pad de timbal, vista de perfil...................................................................................78
Figura 58: Pad de plato, vista de perfil.....................................................................................79
Figura 59: Medida del cable para el borde del parche..............................................................80
Figura 60: Colocacin de capas de malla .................................................................................80
Figura 61: Colocacin de cable para tensado de parche...........................................................81
Figura 62: Parche de malla con el borde sin arreglar................................................................82
Figura 63: Parche de malla con el borde terminado..................................................................82
Figura 64: Parche de malla instalado, vista perfil.....................................................................83
Figura 65: Parche de malla instalado, vista frontal...................................................................83
Figura 66: Conector estreo para caja.......................................................................................84
Figura 67: Materiales de construccin para soporte del sensor principal.................................85
Figura 68: Detalle ranura para cables sensor............................................................................85
Figura 69: Instalacin de sensor en soporte..............................................................................86
Figura 70: Esquema de conexin para pad bizona....................................................................86
Figura 71: Vista posterior caja bizona.......................................................................................87
Figura 72: Estructura del pedal de bombo................................................................................88
Figura 73: Piezas sin pintar de los pedales...............................................................................89
Figura 74: Detalle de la maza del pedal de bombo...................................................................90
Figura 75: Agujeros para muelles de la base del pedal de bombo............................................91
Figura 76: Colocacin de muelles sobre la base del pedal de bombo.......................................91
Figura 77: Bisagra y taln del pedal de bombo........................................................................92
Figura 78: Zona de golpeo y conector del pedal de bombo......................................................92
Figura 79: Pedal de bombo terminado......................................................................................93
Figura 80: Esquema pedal de charles........................................................................................94
Figura 81: Dorso de la puntera del pedal de charles.................................................................95
Figura 82: Detalle muelles del pedal de charles........................................................................95
Figura 83: Pedal de charles terminado......................................................................................96
Figura 84: Esquema stand de la batera....................................................................................97
Figura 85: Montaje del stand de la batera................................................................................98
Figura 86: Stand de la batera con pads....................................................................................99
Figura 87: Stand de la batera plegado......................................................................................99
Figura 88: Esquema mdulo batera electrnica.....................................................................100
Figura 89: Placa de prototipo e instalacin de circuitos de proteccin...................................101
Figura 90: Detalle de las soldaduras en la placa de prototipo.................................................102
Figura 91: Detalle de la soldadura del zcalo del multiplexor................................................102
Figura 92: Instalacin de conectores en la placa de prototipo................................................103
Figura 93: Agujeros para conectores en la caja del prototipo.................................................103
Figura 94 Detalle de los conectores en la caja del mdulo.....................................................104
Figura 95: Vista en perspectiva derecha..................................................................................105
Figura 96: Vista en perspectiva izquierda...............................................................................105
XVI

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.

1.2 Descripcin de los bloques del TFG


Dividiremos este documento en cuatro bloques o apartados, donde el primer apartado es la
propia memoria, la cual la hemos dividido de la siguiente manera:
En el primer captulo analizamos los objetivos del proyecto, la motivacin que nos ha llevado
a realizarlo y la justificacin del mismo.
El segundo captulo es un marco terico donde comentamos las tecnologas utilizadas, desde
protocolos de comunicacin hasta el tipo de programacin empleada.
Un tercer captulo llamado diseo donde analizaremos los requisitos que debe de cumplir el
proyecto y la realizacin de pruebas de funcionamiento pertinentes para poder ser
implementado posteriormente.
El cuarto captulo est dedicado a la implementacin del prototipo,

es decir, una vez

terminadas las pruebas del apartado anterior procederemos al montaje real de una batera
electrnica.
2

PARTE I

MEMORIA

En el quinto captulo realizamos un balance de objetivos conseguidos, lneas de trabajo


futuras y las conclusiones finales.
En la segunda parte del TFG mostraremos los planos y esquemas utilizados en el proyecto.
El tercer apartado es un pliego de condiciones donde quedan reflejadas las especificaciones
tcnicas del equipo utilizado.
Un cuarto bloque que describe el presupuesto.
Al final de todo el documento podemos encontrar la bibliografa utilizada para su realizacin.

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.

1.5 Situacin actual / Estado del arte


1.5.1 Tecnologas existentes
Hoy en da podemos encontrarnos con bateras de alta gama con grandes prestaciones pero de
elevado coste econmico y bateras ms econmicas pero con problemas en la captacin de
los golpes y en la calidad del sonido reproducido.
Las bateras electrnicas, esta formadas por una estructura donde estn colocados todos los
timbales electrnicos, que a partir de ahora los llamaremos pads, y una consola encargada de
recoger la informacin de cada pad y procesarla. Las bateras electrnicas pueden o no ser
mudas, lo que significa que nicamente tienen salida de datos y no de audio, por lo que es
obligatorio la conexin a un equipo generador de sonido, como puede ser un ordenador.
Cuando conectamos la batera al ordenador podemos utilizar ciertos programas que nos
permiten reproducir sonidos a tiempo real y controlar el instrumento desde el ordenador.
Las bateras de gamas ms altas suelen incorporar sistemas de captacin del sonido de mayor
calidad basndose en parches que emulan el tacto y la tensin exactas a las de una batera
acstica. Este tipo de parches se conocen como parches de malla. En este tipo de bateras los
pads incorporan algunas funciones extra que no llevan las bateras ms econmicas como
4

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.

1.5.2 Tecnologas seleccionadas


Para el diseo de los timbales de la batera hemos elegido el pad de goma, tambin conocido
como multicapa, ya que su precio es menor y queremos conseguir un prototipo de bajo coste,
aunque uno de los objetivos es modificar una caja de batera real y hacerla electrnica, de esta
manera podremos comprobar el comportamiento del sensor tanto en un tipo de pad como en
otro.
Los sensores instalados en los pads sern discos piezoelctricos pero tambin trabajaremos
con pulsadores para la fabricacin del pedal de charles. La eleccin de este tipo de sensores se
debe a que necesitamos medir la fuerza ejercida en cada golpe, son de tamao reducido y su
precio es ms que econmico.
Para la programacin del microcontrolador hemos elegido la placa Arduino Uno Rev.3 dado
que es una placa de bajo coste y posee un entorno atractivo para el programador.
La batera diseada ser muda dado que no queremos generar sonidos, por lo que
necesitaremos de ciertos programas que permitan cargar bancos de sonidos para su escucha.

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.

2.2 El protocolo MIDI


2.2.1 Introduccin
Los msicos queremos ser capaces de controlar de manera remota o automtica, nuestros
instrumentos musicales ampliando as las posibilidades sonoras y creativas. El control remoto
nos ofrece la posibilidad de tener un nico instrumento o controlador capaz de enviar rdenes
a otros instrumentos de tal manera que una sola persona pueda tocar varios instrumentos u
otros controladores a la vez.

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.

2.2.2 Comunicacin MIDI


El MIDI es un protocolo de comunicacin serie que tiene una velocidad de trabajo de 31250
bits por segundo. Cada byte se compone de ocho bits ms un bit de inicio y otro de parada.
Opera a una tensin de 5 V DC. El conector estndar MIDI es un conector de tipo DIN 1 de
cinco pines, los conectores de un dispositivo son hembras mientras que los del cableado son
machos.
Existe un esquema de cableado especfico para entradas y salidas MIDI, tal y como se
muestra en la Figura 1.

1 DIN son las siglas del Instituto de Normalizacin Alemn. Deutsches Institut fur Nomung.

PARTE I

MEMORIA

Figura 1: Diagrama de conexiones MIDI


El circuito MIDI es un lazo de corriente de 5mA. Para evitar lazos a tierra y los errores en el
envo de datos, la entrada cuenta con un opto-acoplador, el cual necesita menos de 5mA para
encenderse. Los tiempos de subida y bajada para el opto-acoplador deben ser menores a 2
segundos. La salida MIDI se compone de un buffer y algunas resistencias. El conector MIDI
TRHU es una copia de la seal que se enva por MIDI IN, pero es un conector de salida.

2.2.3 Conexiones MIDI


El sistema de funcionamiento del envo de datos MIDI es de tipo simplex, esto quiere decir
que nicamente podemos transmitir seales en un sentido. La direccin de los datos ser
desde un dispositivo maestro hacia uno esclavo. Actuando el primero como generador de
la informacin y el esclavo como receptor.
Como hemos visto en la Figura 1 en un dispositivo MIDI podemos encontrarnos con tres tipos
de conectores distintos:

MIDI OUT: es la salida de informacin de un instrumento. Por este conector salen los
9

CAPTULO 2

MARCO TERICO

mensajes generados nicamente en el instrumento. El terminal OUT de un instrumento


se conectar al IN de otro.

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.

MIDI TRHU: este puerto es til cuando se desea conectar ms de un instrumento y


queremos que les llegue la misma informacin desde un instrumento maestro. Por el
terminal TRHU sale la misma informacin que llega al puerto IN.

Por ejemplo, si desde un instrumento controlador llamado maestro enviamos informacin a un


instrumento esclavo y queremos que esa misma informacin llegue a un segundo instrumento
esclavo, la terminal de salida del maestro la conectaremos a la entrada del primer esclavo y
del terminal TRHU a la entrada del segundo instrumento esclavo, tal y como mostramos en la
Figura 2.

Figura 2: Conexin MIDI

2.2.4 Cable MIDI


El cable MIDI posee cinco conductores protegidos por un blindaje metlico que disminuye las
interferencias por ruidos o campos magnticos existentes a su alrededor. El conector utilizado
es de tipo DIN de cinco pines, aunque de los cuales slo se usan tres en la mayora de los
casos. stos cables generalmente se fabrican en longitudes que van hasta veinticinco metros,
los cuales no debemos sobrepasar si queremos evitar prdidas de informacin.
Por el cabe MIDI circulan mensajes digitales, que en realidad son pequeos pulsos elctricos
10

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.2.5 Canales MIDI


El MIDI est pensado para comunicar un controlador con varias unidades generadoras lo que
significa que todos los aparatos conectados a la cadena recibirn los mensajes generados por
el ordenador. Por lo que ser necesario un mtodo para diferenciar cada uno de los
instrumentos, a su vez permite direccionar hasta 16 canales posibles de informacin (tambin
llamados voces o instrumentos) los cuales viajan a travs de una nica lnea fsica. Por ello,
deberemos asignar un nmero de canal a cada dispositivo.

2.2.6 Mensajes MIDI


Se llaman mensajes MIDI al conjunto de bytes que informan a un equipo de la ocurrencia de
una accin, como por ejemplo la pulsacin de una nota. Todos los mensajes MIDI comienzan
con un byte de estado, que indica el tipo de mensaje. Le siguen dos, uno o ningn byte de
datos.
Para distinguir entre un byte de estado y otro de datos se utiliza el bit ms significativo, si ste
es un uno se trata de un byte de estado mientras que si es un cero ser un byte de datos.
Como muestra la Figura 3, en el byte de estado (status byte) tan slo tres de los siete bits
disponibles (ya que el ms significativo siempre estar a uno) son los que determinan el tipo
de mensaje, mientras que los cuatro restantes determinan el canal al que el mensaje se dirige,
lo que explica porqu son diecisis (24) los canales MIDI posibles.

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

Figura 3: Estructura binaria de un mensaje MIDI


2.2.6.1

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.

En esta tabla podemos observar las siguientes caractersticas:

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

1 'xxxx' ser '0000', y si estamos en el canal diez 'xxxx' ser '1001'.


NOTE ON

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:

Control Change 0: Cambio de banco.

Control Change 1: Modulacin (0000 0001).

Control Change 7: Volumen (000 0111).

Control Change 10: Panorama (000 1010).

Control Change 11: Expresin.

Control Change 64: Sostenido (0100 000).

Control Change 91: Reverberacin (0101 1011).

Control Change 93: Chorus (0101 1101).

Mensajes de Modo.

Control Change 123: All Notes Off.

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

En esta categora encontramos los siguientes mensajes:

Seleccin de cancin (Song Select).

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

Puntero de posicin en la cancin (Song Position Pointer, SPP).

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.

Peticin de afinacin (Tune Request).

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:

Reloj MIDI (Timing Clock) .


Este mensaje tiene como fin mantener varios equipos sincronizados en una red
MIDI. Este mensaje se transmite 24 veces durante cada negra. Al principio se

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

No lleva byte de datos.

Inicio (Start).
Mensajes de inicio desde el puntero de posicin (SPP), todos los dispositivos
conectados iniciaran desde el punto fijado.
Formato del mensaje:
FA

No lleva byte de datos.

Continuar (Continue).
Este mensaje se utiliza para retomar la reproduccin despus de la ltima parada.
Formato del mensaje:
FB

No lleva byte de datos.

Parada (Stop).
Todos los dispositivos se detendrn en el punto fijado por el Stop.
Formato del mensaje:
FC

No lleva byte de datos.

Censo activo (Active Sensing).


Cada 300 milisegundos todos los dispositivos MIDI conectados transmiten este
mensaje. En el caso de una posible desconexin o dao en el sistema, el
dispositivo maestreo silenciar los mensajes correspondientes al instrumento
daado.
Formato del mensaje:
FE

No lleva byte de datos.

17

CAPTULO 2

MARCO TERICO

Restablecimiento del sistema (System Reset)


Con este mensaje podemos resetear todos los equipos del sistema a los valores de
fbrica. Esta posibilidad no se encuentra en la mayora de los dispositivos.
Formato del mensaje:
FF

No lleva byte de datos.

2.3 Plataforma de desarrollo Arduino Uno

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.

2.3.2 Por qu usar Arduino?


Existen en el mercado otros microcontroladores y plataformas disponibles para desarrollo,
como pueden ser Parallax Basic Stamp, Netmedia de BX-24, Handyboard de MIT y muchos
otros. Todas estas herramientas intentan facilitar las partes ms difciles de la programacin de
microcontroladores. Arduino tambin simplifica este proceso pero a su vez ofrece otras
ventajas:

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

Multiplataforma: el software de Arduino permite ejecutarse en Windows, Macintosh


OS X y sistemas operativos Linux, mientras que la mayora de microcontroladores se
limitan a Windows.

El cdigo abierto y el software extensible de Arduino se publican como herramientas


libres, el lenguaje se puede ampliar a travs de biblioteca C++.

Arduino se basa en los microntroladores ATmega328 y Atmega168, publicados bajo


una licencia de Creative Commons, por lo que los diseadores de circuitos pueden
hacer su propia versin del mdulo, ampliarlo y mejorarlo.

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:

Diecimila: sta es la placa Arduino ms popular. Se conecta al ordenador con un cable


estndar USB y contiene todo lo que necesitas para programar y usar la placa.

Nano: una placa compacta diseada para uso como tabla de pruebas, el Nano se
conecta al ordenador usando un cable USB Mini-B.

Bluetooth: el Arduino BT contiene un modulo bluetooth que permite comunicacin y


programacin sin cables, es compatible con los dispositivos Arduino.

LilyPad: diseada para aplicaciones listas para llevar en ropa y complementos.

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.

Uno: es una placa electrnica basada en el microprocesador Atmega328. Se diferencia


de todas las placas anteriores en que no utiliza el chip controlador FTDI USB para la
comunicacin serie, en su lugar cuenta con el Atmega16U2 programado como
convertidor USB a serie.

19

CAPTULO 2

MARCO TERICO

Figura 4: Arduino Uno Rev. 3

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

2.4 Software especfico


En este apartado pretendemos hacer un pequeo resumen de qu programas necesitamos una
vez que queramos conectar nuestro instrumento al ordenador y los cuales nos permitan la
virtualizacin de puertos MIDI, anlisis de datos, aplicaciones que permitan la virtualizacin
del instrumento y drivers de audio que nos permitan practicar sin latencias. Todo este software
es gratuito o tiene versin demo.

2.4.1 Puerto MIDI virtual


Lo primero que necesitamos es una aplicacin que permita transferir datos MIDI entre
programas informticos. Funcionan como un cable invisible que conecta un puerto de entrada
MIDI con cualquier aplicacin. Normalmente este tipo de programas permiten hasta ocho
aplicaciones en el puerto de entrada y otras ocho en el puerto de salida, todo ello a tiempo
real.
Este tipo de aplicaciones tienen detecciones de atajos que evitan las retroalimentaciones de
seales MIDI mostrando mensajes por pantalla y silenciando el puerto.
HairLess vs SerialMidiConverter
Serial Midi Relay es una aplicacin pensada para enviar datos MIDI usando el puerto serie
USB con el que tenemos conectado nuestro instrumento al ordenador. Mediante el uso de este
tipo de aplicaciones podemos evitarnos el tener que construir y cablear un conector MIDI y
luego tener que comprar un convertidor de datos MIDI-USB.
El programa HairLess Midi nos permite lo mismo pero es de cdigo abierto y admite
cualquier tipo de dato MIDI.

2.4.2 Herramienta de diagnstico MIDI (MIDI-OX)


Este tipo de aplicaciones nos brindan la oportunidad de generar, grabar, convertir y comparar
datos MIDI, monitorizar la actividad de los puertos y muchas ms cosas.
MIDI-OX es una aplicacin pequea y muy fcil de usar que nos ofrece un diagnstico de
toda la actividad MIDI en nuestro sistema.

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

Como veremos a continuacin existen diferentes tecnologas de plugins:

VST (Virtual Studio Technology) .


Creado por la marca Steinberg, (Cubase, Nuendo). Es la tecnologa ms famosa y
valorada. Tiene tambin instrumentos virtuales con los que hacer msica (VSTi). ste
es el tipo de plugin que vamos a utilizar en el proyecto.

LADSPA (Linux Audio Developers Simple Plugin).


Plugins de audio para Linux. Funcionan en programas que trabajan sobre este sistema
operativo, un ejemplo de ello es Ardour, un programa de grabacin multipista.

RTAS (Real Time Audio Suites).


Formato de plugins especial para el software ProTools y sistemas Digidesign. Existen
pocos editores que lo reconozcan. Digidesign tambin trabaja como otro formato, el
TDM.

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.

3.1 Toma de contacto con la placa Arduino


En este primer apartado del Diseo del Sistema haremos una primera toma de contacto con la
placa Arduino, lo que nos llevar a explicar la instalacin de su IDE.
Una vez instalado y ya con nuestra placa conectada al ordenador nos iniciaremos con algn
sketch de prueba, en el que haremos lecturas analgicas, controlaremos leds y visualizaremos
nuestros datos mediante el monitor serie.

3.1.1 Instalacin del software Arduino


A continuacin explicaremos los pasos necesarios para conectar la placa Arduino y cargar un
primer sketch de prueba.
1. Conseguir placa y cable USB:
Obviamente el primer paso consiste en adquirir una placa Arduino junto con un
cable USB del tipo A-B, es decir, como el cable de impresora.
2. Descargar IDE:
Descargaremos el entorno de desarrollo integrado (IDE) de Arduino el cual al
ser una aplicacin gratuita accederemos a la pgina oficial y desde all
iniciaremos la descarga. En este proyecto vamos a usar la versin IDE 1.0.5
25

CAPTULO 3

DISEO DEL SISTEMA


Arduino.

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

Figura 5: Ejemplo Blink


7. Seleccionar la placa:
En la pestaa de herramientas seleccionaremos la placa que vayamos a usar,
como mostramos a la Figura 6, en nuestro caso haremos clic en Arduino Uno.
8. Seleccionar el puerto serie:
Dentro del men herramientas seleccionaremos el puerto serie. Normalmente
los puertos COM1 y COM2 quedan reservados para puertos serie de hardware.
En nuestro caso el puerto en cuestin es el COM3. Para averiguar que puerto
es, podemos desconectar la placa y abrir de nuevo el men. Observaremos que
hay una entrada que ya no est, por lo que esa ser la entrada de la placa
Arduino, as que volveremos a conectarla y seleccionar ese puerto en cuestin.

27

CAPTULO 3

DISEO DEL SISTEMA

Figura 6: Captura donde se muestra el men de seleccin de la tarjeta


9. Subir el programa
Como hemos indicado en la Figura 7, para subir el programa a la placa
pulsaremos el botn de cargar y esperar unos instantes, en ese momento los
leds RX y TX del Arduino parpadearan, lo que indica actividad. Si la carga se
ha realizado correctamente observaremos que todo funciona correctamente y
aparecer un mensaje en la aplicacin que nos dir que la carga ha sido
correcta y tambin el tamao en bytes del sketch.

Figura 7: Carga de un programa

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.

3.1.2 Lectura de un voltaje analgico


La primera prueba que vamos a realizar es una lectura de una entrada analgica mediante un
potencimetro. Un potencimetro es un dispositivo que proporciona una resistencia variable.
Observaremos los resultados en el monitor serial del IDE.
Hardware necesario

A continuacin detallamos una listado del hardware necesario para la realizacin de esta
prueba.

Placa Arduino.

Potencimetro de 10 Kohm.

Placa de pruebas (protoboard).

Cables de prueba.

Construccin circuito

Para conectar el potencimetro a la placa conectaremos la patilla del medio a la entrada


analgica deseada, como no tenemos ms que una seal lo conectaremos en la entrada A0.
Conectaremos una patilla lateral a la salida de 5V que proporciona la placa y la otra a tierra.

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

DISEO DEL SISTEMA

Cuando la resistencia comprendida entre la patilla del centro y el lado conectado a 5 V es


cercana a cero ohmios, el voltaje de salida por la patilla central ser cercano a 5 V. Al invertir
las resistencias, es decir, al girar el potencimetro hacia el otro lado, la tensin en la patilla
central ser cercana a 0 V. Esta es la tensin analgica que leeremos en la entrada.
Arduino lleva incorporado un convertidor de analgico a digital el cual lee el voltaje a la
entrada y lo codifica con diez bits. Esto significa que nos devolver un nmero comprendido
entre 0 y 1023, proporcional a la cantidad de voltaje a la entrada.
Para la realizacin del esquema hemos decidido utilizar el software Fritzing. Pese a que
existen otras aplicaciones de mbito ms profesional, este programa nos permite cargar placas
Arduino en nuestros proyectos, haciendo que la explicacin quede ms clara, En las Figuras 9
y 10 podemos observar una imagen virtual del circuito y su esquemtico.

Figura 9: Imagen circuito

30

PARTE I

MEMORIA

Figura 10: Esquemtico del circuito

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

DISEO DEL SISTEMA

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.

3.1.3 Deteccin de vibraciones mediante sensor piezoelctrico


Ahora que ya hemos comprendido como leer datos procedentes de entradas analgicas vamos
a realizar una prueba que consistir en detectar una vibracin.
Este tipo de sensor es capaz de generar un pequeo voltaje cuando sufre una deformacin
producida por una vibracin. De manera anloga, cuando un piezoelctrico es sometido a un
voltaje, ste vibra y puede producir tonos.
Pensando en el proyecto que llevamos entre manos, esta prueba es muy importante ya que
vamos a trabajar con el mismo tipo de sensor que luego vamos a colocar en los parches de la
batera electrnica.
En este cdigo nuestro Arduino leer la seal de un piezoelctrico usando la funcin
32

PARTE I

MEMORIA

analogRead(), codificaremos su voltaje en un rango de 0 a 1023 mediante el proceso de


conversin analgico digital. Fijaremos un umbral, es decir, crearemos una variable
comprendida entre 0 y 1023 y compararemos sta con la lectura de la entrada analgica. Si es
superior, enviaremos una cadena de caracteres anunciando que ha habido seal, a travs del
puerto serie.
Hardware necesario

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.

Figura 11: Imagen del circuito

33

CAPTULO 3

DISEO DEL SISTEMA

Figura 12: Esquemtico del circuito

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.2 Instalacin de software necesario


En este punto del diseo explicaremos qu programas, plugins y drivers necesitamos tener
instalador en nuestra mquina y comentaremos sus aspectos ms importantes.
Comprobaremos los tiempos de latencia con los drivers de sonido genricos de nuestro
ordenador y compararemos con los tiempos obtenidos utilizando drivers especficos para
trabajar con sonido.

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

DISEO DEL SISTEMA

3.2.1 Instalacin y configuracin del controlador ASIO4ALL


ASIO4ALL es un controlador universal para audio WDM 5 que nos permite utilizar
aplicaciones profesionales de audio.
Los drivers ASIO se utilizan en aplicaciones profesionales de audio en vez de los drivers
comunes que tenemos en nuestros sistemas operativos por la baja latencia que proporcionan.
Un ejemplo de latencia tpico se da cuando conectamos un instrumento MIDI al ordenador y
ejecutamos un plugin de instrumento virtual tipo VSTi y notamos una excesiva demora entre
la pulsacin de la nota y la reproduccin de su sonido. Los problemas de latencia pueden
hacer que sea prcticamente imposible el uso tiempo real del instrumento MIDI.
El problema de usar drivers genricos es que trabajan a travs del sistema operativo, por esta
razn generan latencia, mientras que un driver ASIO se conecta directamente con la tarjeta de
sonido, solucionando de esta manera el problema.
Las siglas ASIO significan Audio Stream Input/Output, que podemos traducir al castellano
como flujo de entrada y salida de audio. Este protocolo fue desarrollado por Steinberg.
Para el proceso de instalacin descargaremos los drivers de manera gratuita desde la pgina
oficial y ejecutaremos el programa. Nos guiar un asistente que facilita el proceso.
Una vez instalado abriremos nuestro editor de audio, en nuestro caso ya tenamos instalado
Nuendo 3.2.0 de la casa Steinberg, dentro de las opciones de Dispositivos pinchamos en
configuracin de dispositivos y seleccionamos Sistema de Audio VST.
Seleccionamos en la pestaa donde pone Controlador ASIO y pinchamos en ASIO4ALL v2,
al aceptar los cambios podemos observar como los valores de latencia han disminuido
notablemente. En la Figura 13 mostramos una comparacin de latencias dependiendo del uso
del driver ASIO4ALL v2 y de ASIO DirectX Full Duplex Driver.

Figura 13: Comparacin de latencias en drivers ASIO


Una vez seleccionado ASIO4ALL v2 accedemos a su panel pulsando ASIO4ALL (Figura 14),
5 WDM son las siglas de Windows Drivers Model Audio, cuya traduccin sera Controladores de Audio tipo
Windows.

36

PARTE I

MEMORIA

en el desplegable de la izquierda. Una vez en el programa podemos visualizar la lista de


dispositivos WDM que tenemos instalados. observar que hay dos botones en la parte inferior
derecha. El diamante restaura la configuracin inicial y la llave inglesa activa la configuracin
avanzada. En la parte de abajo podemos controlar el tamao de buffer aunque en un principio
no recomendamos empezar a mover estos controles a la ligera.
Hemos adjuntado en el CD del proyecto un manual de instrucciones de ASIO4ALL aunque
desde aqu explicaremos los aspectos ms importantes.

Figura 14: Panel principal ASIO4ALL


Si pulsamos la llave inglesa cambiaremos a modo avanzado, podremos mejorar las
caractersticas del controlador, o por el contrario, hacer que funcione peor, como muestra la
Figura 15 deberemos activar los dispositivos unicamente que queramos usar.

Figura 15: Modo configuracin avanzada ASIO4ALL


37

CAPTULO 3

DISEO DEL SISTEMA

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

rendimiento ya que cambia el mtodo de acceso para un dispositivo, de Push a


Pull. Generalmente el modo Pull es tcnicamente superior, aunque no est
soportado por muchos controladores. Es conveniente tener marcada esta casilla, de
esta manera, siempre que sea posible cambiaremos a modo evento (modo Pull).

ASIO4ALL nos permite remuestrear en tiempo real de 44.1kHz a 48kHz y


viceversa. Si la tarjeta de sonido es propensa a tener problemas de estabilidad es
conveniente pulsarla. En nuestro caso no ha hecho falta, de hecho, con la
configuracin por defecto la latencia ya es mnima.

Tambin tiene la opcin de forzar al controlador WDM a trabajar a 16 bits.

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

Figura 16: Modificaciones para conseguir latencias mnimas


En la Figura 16 podemos observar los cambios efectuados en el panel de control del driver y
su efecto en las latencias de entrada y salida del secuenciador.

3.2.2 Herramienta de anlisis MIDI-OX


Aunque este programa es una completa herramienta de anlisis de actividad MIDI, de
momento vamos utilizar este programa unicamente para monitorizar los datos que llegan por
un puerto MIDI.
Descargamos la aplicacin desde la pgina principal ya que es un programa gratuito. Una vez
instalado lo ejecutamos y damos paso a la configuracin del puerto MIDI de entrada, en
Options>MIDI devices (Figura 17). Se nos abre otra pestaa en la que podemos seleccionar
los puertos de entrada y salida, por lo que el programa puede recibir datos MIDI por un
puerto, procesarlos y enviarlos por otro.

39

CAPTULO 3

DISEO DEL SISTEMA

Figura 17: Pestaa de configuracin de puertos MIDI en la aplicacin


MIDI-OX

3.3 Envo de datos MIDI


En este punto del diseo vamos a comunicar va MIDI nuestro placa por primera vez. Para
ello, lo primero que haremos ser el cable de salida de datos MIDI OUT. Luego cargaremos
un cdigo que enve comandos MIDI al ordenador y mediante la herramienta MIDI-OX
visualizaremos la informacin entrante.
Para que el ordenador pueda recibir la informacin MIDI haremos dos pruebas, una con un
puerto virtual usando el propio USB del Arduino, y otra con un cable MIDI-USB.

3.3.1 MIDI OUT Hardware


En este apartado vamos a construir un conector de salida MIDI utilizando el puerto serie de
nuestra placa. Para ello vamos a necesitar:

40

Conector MIDI, por normativa todos los conectores son hembras.

PARTE I

MEMORIA

Resistencia de 220 ohm.

Cables para prototipo.

Soldador y estao.

Realizaremos las conexiones de la siguiente manera:

Pin digital 1 conectado al conector MIDI en el pin 5.

Pin de tierra conectado al pin 2 del conector MIDI.

Pin de 5 V a la resistencia de 220 ohm y de la resistencia al pin 4 del conector MIDI.

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.

Figura 18: Imagen del montaje del conector MIDI

41

CAPTULO 3

DISEO DEL SISTEMA

Figura 19: Esquemtico del montaje del conector MIDI

Figura 20: Numeracin pines conector


MIDI

42

PARTE I

MEMORIA

3.3.2 Primer cdigo MIDI


A continuacin cargaremos un cdigo de ejemplo que se encuentra dentro de las bibliotecas
de ejemplo del IDE, Archivos >

Ejemplos > 04.Communication > MIDI. El cdigo

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

NMEROS DE LAS NOTAS


C

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

Tabla 2: Relacin de las notas con su nmero

43

CAPTULO 3

DISEO DEL SISTEMA

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.

3.3.3 Puerto MIDI virtual


En este apartado realizaremos la instalacin de programas necesarios para virtualizar un
puerto MIDI, instalaremos un programa que acte como dispositivo virtual MIDI capaz de
transferir datos entre programas informticos y otro programa que acte como pasarela entre
el puerto USB donde estar conectado la placa Arduino y el puerto virtual.
Los programas utilizados son LoopBe y Hairles-MIDISerial. Como ya hemos explicado, el
primero se utiliza para virtualizar puertos MIDI y el segundo para direccionar datos de un
puerto a otro, pudindose elegir. Una vez instalados, iniciamos LoopBe, y acto seguido
abrimos Hairless-MIDISerial. En la Figura 21 mostramos una imagen del programa Hailess
donde se aprecia el enrutado de salida hacia el programa LoopBe.
Como comentbamos antes, con la funcin Serial.begin() podemos establecer la
velocidad en bits por segundo para la transmisin de datos en serie. Para la comunicacin con
44

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.

Figura 21: Software Hariless MIDI <--> Serial Bridge

Figura 22: Monitor de salida y actividad de puertos MIDI del programa


MIDI-OX
45

CAPTULO 3

DISEO DEL SISTEMA

3.3.4 Cable MIDI-USB


Este tipo de interfaz nos permite conectar equipos MIDI en puertos USB, sin la necesidad de
gastar demasiado dinero.
La alimentacin de este cable viene proporcionada por la conexin USB. Al conectarlo al
ordenador se instala automticamente, Plug and Play, por lo que no tendremos ningn
problema con los drivers, adems soportan cualquier sistema operativo e incorporan unos leds
con los que saber el estado de la comunicacin.
Como hemos visto en el punto anterior, mediante la conexin USB del Arduino se puede
enviar datos MIDI al ordenador. Esto es posible con un software apropiado, pero si lo que
queremos conseguir es que nuestro instrumento sea capaz de conectarse a cualquier ordenador
es preferible el uso de este tipo de interfaz, Figura 23.

Figura 23: Cable MIDI-USB


Al ser un cable no ocupa mucho espacio en nuestro escritorio o zona de control, comprndolo
con interfaces ms pesadas, que suelen venir en formato caja o rack y a parte necesitaramos
un par de cables MIDI-MIDI y un cable USB-USB.
Antes de conectar el cable debemos de acordarnos de cambiar la velocidad de transmisin de
46

PARTE I

MEMORIA

datos serie y fijarla en el estndar MIDI: 31250 bps.


Una vez cargado el cdigo y conectando la placa por el cable USB-MIDI accedemos al men
de dispositivos en Options>MIDI devices y seleccionaremos el nombre del driver,
USB2MIDI.

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

DISEO DEL SISTEMA


Instalacin

Velocidad (baud
rate)

Puerto Gratuito Programas de


110, 300, 600,
USB
pasarela y
1200, 4800, 9600,
Arduin
virtualizacin
14400, 19200,
o
de puertos
38400, 56000,
MIDI
57600, 115200,
128000, 256000
Cable 15-20 Plug and play
31250
MIDI(autoinstalable
USB
)

Uso

Indicador Salida desde


de
Arduino
actividad
Uso
Indicador Por el puerto
exclusivo visible en la USB de
ordenador interfaz del Arduino.
personal
programa
(software)
Cualquier Mediante Necesidad de
dispositivo
leds
construccin
MIDI
(hardware) de conector
de salida
MIDI OUT

Tabla 3: Comparacin de los modos de conexin del instrumento al ordenador.

3.4 Envo de datos mediante sensores y


pulsador
En este apartado vamos a realizar un primer cdigo capaz de leer el valor de un sensor
piezoelctrico conectado a una entrada analgica y un pulsador conectado a una digital.
Mediante el uso del puerto serie enviaremos mensajes MIDI a nuestro ordenador.

3.4.1 Hardware requerido


A continuacin detallamos el hardware requerido para este apartado:

48

Placa Arduino.

Sensor piezoelctrico.

Resistencia 1 Megaohm.

Resistencia 1 Kohm.

Zner 5,1V.

Pulsador (NA normalmente abierto) apagado hasta que lo pulsas.

Cables de prototipo.

Placa de pruebas.

MIDI OUT cable (realizado en el aparatado anterior)

PARTE I

MEMORIA

3.4.2 Construccin del circuito


Antes de comenzar a poner los componentes, es conveniente preparar la placa de pruebas
dotndola de alimentacin y masa.
Como puede observarse en la Figura 24, necesitamos proteger la entrada del Arduino. Los
discos piezoelctricos actan tambin como grandes condensadores. Esto significa que el
disco tendr una carga que se mostrar como cambios constantes en la salida del disco. Para
prevenir este efecto conectaremos una resistencia entre la salida del disco y la masa. Esta
resistencia se encargar de drenar el exceso de capacidad.
Una resistencia de un valor en torno a 1 Mohm elimina la acumulacin de carga sin disminuir
de manera excesiva la sensibilidad del piezoelctrico. Un valor alto de impedancia aumentar
la sensibilidad pero podra provocar una acumulacin extra de carga, aunque es slo ocurrira
si empleamos valores superiores a los 5,6Mohm. En cambio, si la resistencia es ms baja, a
parte de reducir la acumulacin de energa tambin reduciremos la sensibilidad del sensor.

Figura 24: Circuito acondicionador de seal para sensor


piezoelctrico a la entrada de la placa Arduino
Conectaremos la salida MIDI OUT ya diseada en el apartado anterior y conectaremos el
pulsador a una entrada digital y a masa, dependiendo de la programacin deberemos poner
resistencias de pull-up o pull-down6, tambin dependiendo del funcionamiento del botn, ya
sea normalmente abierto o normalmente cerrado. El chip Atmega que tiene Arduino incorpora
resistencias pull-up de 20 Kohm a las que podemos acceder desde el software. En la Figura 25
mostramos un diagrama de la configuracin de pull-up interna.
6 Resistencias que estn dispuestas en una configuracin determinada con el fin de establecer un estado lgico
en reposo, siendo para pull-up un estado a nivel alto y para pull-down bajo. De esta forma se evitan estados
falsos producidos por el ruido elctrico .

49

CAPTULO 3

DISEO DEL SISTEMA

Figura 25: Configuracin de resistencia interna de pull up


Para acceder a estas resistencias, despus de la declaracin del pin como entrada deberemos
hacer un digitalWrite(pin,HIGH);
En la figura 26 podemos observar las configuraciones de resistencias de pull-up y pull-down
externas.

Figura 26: Configuracin de resistencias de pull-up y


pull-down

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.

Figura 27: Esquema de montaje para un sensor piezoelctrico y un pulsador

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

DISEO DEL SISTEMA

como estado anterior del pulsador y estado actual.


Para la lectura de la entrada analgica necesitaremos una variable que almacene el valor
proporcionado por el conversor, una variable que guarde el tiempo y una variable de
debounce, es decir, una variable que controlaremos para impedir lecturas indeseadas en el
canal analgico, es decir, un control de ciclos.
Tambin definiremos los valores de las notas MIDI que vayamos a enviar, como prueba en
este apartado, enviaremos las notas del bombo y de la caja, 35 y 38 DEC respectivamente.
En la funcin de setup() a parte de inicializar el puerto serie a 31250 bps configuraremos
el pin digital como salida y activaremos la resistencia interna de la siguiente manera:
pinMode(pulsador, INPUT);
digitalWrite(pulsador, HIGH);
Serial.begin(31250);
Cdigo 8: Funcin de setup() para apartado 3.4.
Una vez estemos en la funcin principal loop() distinguiremos entre la parte de lectura
digital y analgica. Empezaremos explicando el proceso de lectura digital.
3.4.3.1 Lectura digital

Mediante la funcin digitalRead() leeremos el estado del pulsador y lo guardaremos en


la variable de estado actual. Ahora necesitamos comparar el estado actual con el anterior de
tal manera que si tenemos un nivel bajo en el estado actual y el estado anterior es a nivel alto
significa que se ha presionado el pulsador, por lo que enviaremos la funcin NoteOn().
Volvemos a comparar y si el estado actual es a nivel alto y el estado anterior es bajo
significar que hemos soltado el botn, por lo que enviaremos el comando de apagar nota,
NoteOff(). Al finalizar este bucle igualaremos el estado actual al estado anterior.
Podemos programar esta funcin de muchas maneras, las cuales dependern del propio
programador, del tipo de pulsador o el tipo de pull (up o down) ya sea interno o externo.
A continuacin mostramos el cdigo descrito.

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

Mediante la funcin analogRead() leemos la informacin proveniente de la entrada


analgica y la dividimos entre ocho para poder fijarla en unos mrgenes adecuados [0-127].
Como ya hemos comprobado en apartados anteriores, el conversor incorporado de la placa
Arduino es de 10 bits por lo que tiene un margen de conversin de [0-1023], mientras que el
byte que controla el volumen slo tiene operativos los 7 bits menos significativos, ya que es
un byte de datos y empieza por cero, por lo que tendremos un margen de [0-127].
Una vez realizada y adaptada la lectura analgica establecemos una ventana en la que la seal
debe superar un umbral mnimo para evitar que se filtren ruidos y que se haya producido con
un tiempo inferior al de debounce.
Llegados a este punto, si no tenemos ningn valor de ganancia fijado por la variable offset,
enviaramos los mensajes de encendido y apagado de nota. Sin embargo, al tener una
ganancia extra tenemos que volver a acotar el margen del volumen a enviar, ya que de no
hacerlo estaramos enviando otra cosa. Por lo que comparamos la suma del offset y del valor
de la lectura adaptada de la seal analgica con 126, de ser superior, enviaremos siempre 127.
A continuacin mostramos la parte de cdigo donde se realiza la lectura y su posterior
tratamiento.

53

CAPTULO 3

DISEO DEL SISTEMA

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.

3.5 Aumento del nmero de canales


Hasta el momento hemos sido capaces de escribir un cdigo capaz de leer todas las entradas
analgicas disponibles de nuestra placa, un total de seis. Ahora bien, normalmente una batera
ya sea acstica o electrnica posee ms platos, ms timbales, lo que se transforma en la
54

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.

Figura 28: Batera de 6 canales

Figura 29: Batera de 12 canales

55

CAPTULO 3

DISEO DEL SISTEMA

3.5.1 Definicin de multiplexor


Los multiplexores son circuitos de lgica combinacional que poseen varias entradas y una
nica salida de datos, estn dotados de entradas de control que permiten seleccionar una de las
entradas de datos para permitir su transmisin desde la entrada seleccionada hasta dicha
salida.
Como podemos observar en la Figura 30, estos circuitos combinacionales poseen 2 n lneas de
entrada de datos, una lnea de salida y n entradas de seleccin. Las entradas de seleccin
indican qu lnea de entrada de datos es la que proporciona el valor a la lnea de salida. Cada
combinacin de las entradas de seleccin se corresponde a una entrada de datos y la salida del
multiplexor corresponder al valor de la entrada seleccionada.
El uso de un multiplexor da lugar a diversas aplicaciones:

Selector de entradas.

Serializador: convierte datos en formato paralelo a formato serie.

Transmisin multiplexada: utilizando las mismas lneas de conexin se transmiten


diferentes datos de distinta procedencia.

Realizacin de funciones lgicas: se consigue disear funciones lgicas ms


complejas y de un modo ms compacto que usando puertas lgicas.

Figura 30: Comparacin de un multiplexor con un conmutador


controlado

3.5.2 Multiplexor / Demultiplexor analgico CD4051B


Este tipo de multiplexores actan como conmutadores analgicos controlados digitalmente,
poseen una baja impedancia de encendido y una corriente de fuga de apagado muy baja.
El CD4051B es un multiplexor de 8 canales que tiene tres entradas binarias de control, A, B y
56

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.

3.5.3 Hardware requerido


A continuacin mostramos el hardware requerido para este apartado:

Placa Arduino.

Sensor piezoelctrico (x6).

Resistencia 1 Megaohm (x6).

Zner 5,1 V (x6).

Cables prototipo.

Placa de pruebas.

MIDI OUT cable (realizado en el aparatado anterior).

Multiplexor CD4051B.

3.5.4 Construccin del circuito


A continuacin mostraremos la tabla de la verdad, Tabla 4 y la descripcin de los pines del
multiplexor, Figura 31.

Tabla 4: Tabla de la verdad del multiplexor CD4051B.

57

CAPTULO 3

DISEO DEL SISTEMA

Figura 31: Configuracin de pines del


multiplexor / demultiplexor CD4051B

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

Figura 32: Conexin multiplexor 4051 a placa Arduino

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

DISEO DEL SISTEMA

for (int i=0;i<8;i++){


// Recorre las 8 posiciones del multiplexor
switch (i) {
case 0: // 000
digitalWrite(bit1,LOW); 0
digitalWrite(bit2,LOW); 0
digitalWrite(bit3,LOW); 0
/* Antes del break escibiremos el cdigo propio para el
correcto envo de informacin MIDI.*/
break;
case 1: // 001
digitalWrite(bit1,LOW); 0
digitalWrite(bit2,LOW); 0
digitalWrite(bit3,HIGH);1
break;
/* cada case se corresponde con una entrada analgica del
multiplexor, es decir, habra tantos cases como entradas
tuviramos en el multiplexor.*/
}
}
Cdigo 11: Bucle para recorrer las posiciones del multiplexor.
En la seccin de cdigos fuente del CD de la memoria podemos encontrar el cdigo
implementado para seis entradas del multiplexor con el nombre de Multiplexor_6ch.
El diagrama de flujo lo podemos encontrar en la seccin de planos de este proyecto bajo el
nombre de Multiplex6ch.

60

PARTE I

MEMORIA

3.6 Funciones especiales Pads


En este apartado vamos a estudiar como programar ciertos pads cuyo funcionamiento va a ser
distinto a los dems.

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

Pisar pedal + golpear pad

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.

3.6.2 Pad bizona


Queremos equipar un pad con dos sensores de tal manera que uno enve una nota y el otro
enve otra nota distinta.
De este modo conseguiramos construir un instrumento an ms realista.
Dependiendo de la propia construccin del pad los sensores podrn ir colocados de una
manera u otra. Por ejemplo, si utilizamos un pad estndar diseado a base de capas deberemos
colocar los sensores en la misma superficie reflectante, uno en el centro y otro en el borde, o
recortar esa superficie reflectante de tal manera que quede un crculo y un aro. Mientras que si
aprovechamos el cuerpo de un tambor real para fabricarnos en pad (en el captulo de
implementacin del prototipo se detalla su construccin) colocaremos un sensor en el parche
y otro en el aro metlico que tensa el parche.
En la figura 33 mostramos diferentes maneras de construir un pad bizona.

61

CAPTULO 3

DISEO DEL SISTEMA

Figura 33: Formas de construccin pad bizona

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.

3.6.3 Silencio de plato


La accin de silenciar un plato, conocida en ingls por cymbal choke es una tcnica de
percusin que consiste en golpear un platillo con la baqueta y de inmediato parar con la mano
la vibracin de ste. Se suele emplear para enfatizar un ritmo en particular o sealar un final
abrupto.
Dependiendo del plugin que utilicemos, algunos poseen unas notas especficas para cancelar
62

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.

Figura 34: Conexin de de piezoelctrico y pulsador para silenciar un plato


Para la fabricacin del pulsador necesitamos dos superficies conductoras de papel de aluminio
las cuales estn separadas entre s y pegadas a una superficie de material plstico, sobre la
cual ejerceremos la presin.
Las superficies debern estar lo suficientemente separadas para que no afecte la vibracin del
pad y no genere contacto, con un centmetro ser suficiente, aunque depender de la anchura
del pulsador.

63

CAPTULO 3

DISEO DEL SISTEMA

3.7 Funciones especiales usuario


Normalmente las bateras electrnicas incorporan ciertos botones que permiten cambiar el
sonido del pad o fijar un umbral especfico para cada instrumento. En este apartado vamos a
explicar algunos ejemplos de diseo de estas funciones especiales. Los cdigos completos se
encuentran en la seccin de cdigos del CD de la memoria.

3.7.1 Cambiar el sonido de un Pad


En ocasiones nos interesa que cierto pad de la batera pueda variar el pitch (su nota) y as de
esta manera producir un sonido diferente. Despus de una serie de pruebas hemos diseado
dos mtodos distintos, con botones y con potencimetros, a continuacin mostramos los
mtodos implementados.
3.7.1.1 Mediante botones de seleccin (Digital)

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.

Figura 35: Esquema de montaje de un sensor piezoelctrico y dos


botones de seleccin

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 (+)

Volcaremos la lectura del pin digital correspondiente en la variable estadoActualMas y lo


compararemos con el estado anterior, si son distintos y el estado actual se encuentra en nivel
alto y la nota MIDI que enviamos es inferior a 127 (su mximo), incrementaremos en uno su
valor (nota++), si el incremento superara el valor 127 el valor de la variable nota lo
igualaremos a cero, ( else { nota = 0 } ).
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

DISEO DEL SISTEMA

3.7.1.1 Mediante potencimetros (analgico)

Con esta configuracin pretendemos cambiar el sonido de un pad dependiendo de la posicin


del potencimetro, lo que se traduce a un nivel de voltaje comprendido entre cero y cinco
voltios proporcionado por la placa Arduino. Como se puede observar en la Figura 36, las
patillas laterales del potencimetro irn a +5 V y a GND respectivamente, y el terminal
variable a una entrada analgica.

Figura 36: Esquema de montaje de un sensor piezoelctrico y un


potencimetro

CDIGO

La diferencia fundamental de este cdigo radica en volcar la informacin proveniente de la


lectura analgica en la variable de nota y dividirla entre ocho, de esta manera adaptamos el
rango de lectura de [0-1023] a [0-127] con lo que ya estaremos dentro de los mrgenes
permitidos para el envo del byte de datos correspondiente.
El cdigo completo se encuentra en la carpeta de Cdigos del CD de la memoria con el
nombre Cambio nota potencimetro. El diagrama de flujo podemos encontrarlo en la seccin
de planos de este documento con el nombre de Cambio nota analgico.

3.7.2 Subir y bajar de octava nuestro banco de sonidos


Una opcin que puede ser interesante es querer aumentar o disminuir una octava nuestro
banco de sonidos, de tal manera que podamos cambiar el sonido de todos los pads con slo
pulsar un botn. Realizaremos el montaje de la misma manera que la Figura 35.
66

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)

//incrementamos una octava

{
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.

Figura 37: Tonos naturales y semitonos

67

CAPTULO 3

DISEO DEL SISTEMA

3.7.3 Variar el umbral con potencimetro


Puede ser til disponer de un control fsico sobre el umbral (puerta de ruido) de los sensores.
Por ejemplo, si estamos tocando el instrumento en un ambiente ms ruidoso de lo normal
podemos tener problemas de disparo de sonidos indeseados. Con esta solucin, el msico
nicamente tendr que aumentar el umbral girando el potencimetro.
Podemos fijar tantos potencimetros como canales analgicos tengamos, usar uno para todo el
conjunto o agrupar canales por subgrupos (timbales, platos, bombo) para obtener un control
ms eficiente.
Para realizar esta prueba montaremos el circuito mostrado en la Figura 36 y lo probaremos
sobre un nico pad.

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.

4.1 Diseo de los pads


Estos elementos de la batera contienen los transductores piezoelctricos y representan la superficie
de contacto con el percusionista. Si los clasificamos por su funcin dentro del kit podemos
encontrar pads de plato, de timbales y un pad especial para el bombo y otro para el charles (Hi hat).
Otra forma de clasificarlos es en funcin del material de la superficie que se golpea, pueden ser de
goma (multicapa) o malla, stos ltimos dotan de ms calidad, ya que son ms silenciosos y su
rebote es ms parecido al real.
En funcin del nmero de seales que pueden transmitir, encontramos pads mono y estreo. Segn
sus zonas de golpeo pueden ser monozona (pads mono) bizona (pads estreo) y trizona, con tres
zonas diferentes de golpeo.

4.1.1 Pad multicapa


En esencia, la construccin de este tipo de pad es superponer diversas capas de materiales con el
sensor dentro.
Como podemos observar en la Figura 38 las capas superiores protegen al sensor de daos y reducen
las vibraciones del golpe. La capa intermedia es una chapa de metal donde vamos a pegar el
transductor y ayuda a transmitir el golpe al sensor de una manera uniforme.
Las capas inferiores ayudan a eliminar vibraciones indeseadas y formar una base slida para anclar
a la estructura de la batera.
69

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 38: Pad multicapa, vista de perfil

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

Madera DM 800x400x10 mm (x3).

Goma espuma 2000x1000x10 mm (x1).

Baldosas de goma EVA 320x320x7 mm (x8).

Chapa metlica 1000x1000x1,5 mm.

Conector Jack hembra 6,3 mm (x8).

Transductor piezoelctrico 5 Vac 3 mm (x8).

Grapas clip para tubo de 32 mm (x8).

Cable audio.

Soldador, estao, multmetro.

Pegamento EPOXI universal y pegamento de contacto polivalente.

Taladro con brocas (20 mm madera, 9 mm madera, 3 mm madera).

Pinturas y pinceles (esmalte azul marino, satinada negra y azul marino).

Tubo termo retrctil.

PARTE I

MEMORIA

Tijeras de hojalata y tijeras multifuncin.

Lija.

Sierra de calar.

4.1.1.2 Construccin pads multicapa


PASO 1

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.

Figura 39: Elaboracin de las capas para pad de timbal

71

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

Figura 40: Elaboracin de las capas para pad de plato

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.

Figura 41: Lijado de la superficie reflectante

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.

Figura 42: Soportes de pads en proceso de secado

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

IMPLEMENTACIN DEL PROTOTIPO

Figura 43: Soldadura de los cables del sensor a los


cables de ampliacin

Figura 44: Colocacin funda termo retrctil tapando la soldadura

Figura 45: Funda termo retrctil instalada

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.

Figura 46: Fijacin del sensor a superficie reflectante

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

IMPLEMENTACIN DEL PROTOTIPO

Figura 47: Vista posterior agujero 20 mm

Figura 48: Vista posterior agujero para conector terminado

Figura 49: Vista posterior conector

76

PARTE I

MEMORIA

Figura 50: Vista frontal del conector ya instalado

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

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 52: Detalle grapa sujecin


RESULTADO

En las Figuras 53, 54, 55 ,56 ,57 y 58. mostramos unas imgenes de los pads terminados.

Figura 53: Pad de plato, vista frontal

Figura 54: Pad de plato, vista trasera


78

PARTE I

MEMORIA

Figura 55: Pad de timbal, vista


frontal

Figura 56: Pad de timbal, vista


trasera

Figura 57: Pad de timbal, vista de perfil

Figura 58: Pad de plato, vista de perfil

79

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

4.1.2 Pad de malla


Para realizar este tipo de pad hemos utilizado una caja de batera real. El porqu usamos una caja
real es debido a la necesidad de tensar el parche que vamos a fabricar. Para comprobar diferentes
tecnologas y su funcionamiento vamos a realizar un pad bizona, donde tendremos la posibilidad de
trabajar con dos sensores sobre un mismo instrumento.
4.1.2.1 Materiales

A continuacin mostramos el listado de materiales empleados para su fabricacin:

Para la construccin del parche:

Trozo de cable del mismo dimetro que la caja.

Tela mosquitera de fibra de vidrio.

Cola termofusible.

Para la construccin del soporte del sensor y sus componentes

Pletina en forma de L:

Tornillo de 80 mm y tres tuercas y arandela.

Goma EVA 2 mm.

2 sensores piezoelctricos de 30 mm y 15 mm.

Conector Jack hembra estreo de 6,3 mm.

Cable de audio.

Soldador, estao, multmetro.

4.1.2.2 Construccin del parche


PASO 1

Como podemos observar en la Figura 59 mediremos el dimetro de la caja para cortar a medida el
cable .

Figura 59: Medida del cable para el borde


del parche
80

PARTE I

MEMORIA

PASO 2

Cortaremos dos piezas de mosquitera dejando unos mrgenes superiores al dimetro de la caja,
Figura 60.

Figura 60: Colocacin de capas de malla


PASO 3

Fijaremos ambas con ayuda de la pistola de cola.

Figura 61: Colocacin de cable para tensado de


parche
PASO 4

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

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 62: Parche de malla con el borde sin arreglar

Figura 63: Parche de malla con el borde terminado

82

PARTE I

MEMORIA

RESULTADO

En las Figuras 64 y 65 podemos observar el resultado final del parche de malla instalado en la caja.

Figura 64: Parche de malla instalado, vista perfil

Figura 65: Parche de malla instalado, vista frontal


83

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 66: Conector estreo para caja

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.

Figura 67: Materiales de construccin para soporte del sensor principal

85

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

Figura 68: Detalle ranura para cables sensor

Figura 69: Instalacin de sensor en soporte

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.

Figura 70: Esquema de conexin para pad bizona

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.

Figura 71: Vista posterior caja bizona

87

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

4.2 Pedales de la batera


En el apartado anterior hemos llevado a cabo la construccin de los pads, a continuacin vamos a
explicar el proceso de fabricacin de un pedal para bombo, el cual transmite al microcontrolador
una seal analgica y un pedal para el charles, que acta como pulsador, por lo tanto digital. En la
Figura 72 podemos apreciar la estructura del pedal.

Figura 72: Estructura del pedal de bombo

4.2.1 Materiales
A continuacin detallamos un listado de los materiales empleados para su construccin:

88

Madera.

Bisagras (x2) 4 x 2,5 mm.

Clavos (x8) 5 mm.

Tuercas (x4).

Gancho de tornillo en forma de U con doble cabeza de metal.

Goma EVA, chapa metlica y goma espuma.

Conector Jack hembra 6,3 mm (x2).

Cable audio paralelo 15 cm.

Pinceles y pinturas.

PARTE I

MEMORIA

Pegamento de contacto polivalente y epoxi universal.

Sensor piezoelctrico 30 mm.

Muelles (x2 -3,5 cm) (x2-2 cm).

4.2.2 Herramientas
A continuacin detallamos un listado de las herramientas empleadas para su construccin:

Sierra de calar con hoja de madera para corte circular.

Soldador y estao.

Pinzas de sujecin.

Alicates de corte y de presin.

Tijeras de hojalata.

Taladro y broca 0,9 mm.

4.2.3 Pedal de bombo


PASO 1

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.

Figura 73: Piezas sin pintar de los pedales

89

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 74: Detalle de la maza del pedal de bombo

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.

Figura 75: Agujeros para muelles de la base del pedal de bombo


.

Figura 76: Colocacin de muelles sobre la base del pedal de bombo

91

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 77: Bisagra y taln del pedal de bombo


PASO 6

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.

Figura 78: Zona de golpeo y conector del pedal de bombo


92

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.

Figura 79: Pedal de bombo terminado

93

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

4.2.4 Pedal de charles


La caracterstica de este pedal es que no necesita una gran zona de impacto, ya que slo acta como
pulsador. La construccin global es idntica a la descrita en el pedal de bombo por lo que en este
apartado solo explicaremos la construccin de la zona de contacto y algunas particularidades a la
hora de fijar los muelles. En la Figura 80 mostramos el esquema del pedal de charles.

Figura 80: Esquema pedal de charles

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

Figura 81: Dorso de la puntera del pedal de charles

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.

Figura 82: Detalle muelles del pedal de


charles

95

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 83: Pedal de charles terminado

96

PARTE I

MEMORIA

4.3 Diseo del stand y colocacin de pads


En este apartado vamos a construir un stand de batera, es decir, una estructura donde fijar todos los
pads. Las medidas pueden ser relativas puesto que cada msico puede tener unas preferencias a la
hora de escoger las distancias desde su silla hasta los platos o los timbales.
Como material hemos elegido tubo de PVC de 32 mm el cual tiene un precio bastante econmico y
es lo suficientemente rgido para hacer una estructura estable, Figura 84.

Figura 84: Esquema stand de la batera

4.3.1 Materiales
A continuacin se detallan los materiales empleados para la construccin del stand:

Tubos de PVC 32 mm (x4).

Codos (x6), tapones (x10) y conectores en forma de T (x14).

Sierra y cinta mtrica.

97

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 85: Montaje del stand de la batera

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

Figura 86: Stand de la batera con pads

Figura 87: Stand de la batera plegado

99

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

4.4 Mdulo controlador


En este apartado vamos a explicar la construccin de un mdulo donde estarn todos los
componentes electrnicos y la placa microcontroladora. En la figura 88 mostramos un pequeo
esquema de la idea que tenemos en mente para su fabricacin.

Figura 88: Esquema mdulo batera electrnica

4.4.1 Materiales
A continuacin mostramos un listado de los materiales empleados para la construccin del mdulo
controlador.
Resistencia 1 Mohmio (x11).

Resistencia 220 ohmios (x1).

Diodo zner 5,1 V (x11).

Multiplexor 4051 (x1).

Placa perforada para prototipo (x1).

Cables tipo jumper.

Conector Jack Hembra mono 6,3 mm (x10).

Conector Jack Hembra ST 6,3 mm (x1).

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.

Figura 89: Placa de prototipo e instalacin de circuitos de proteccin

101

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

Figura 90: Detalle de las soldaduras en la placa de prototipo

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.

Figura 91: Detalle de la soldadura del zcalo del multiplexor

102

PARTE I

MEMORIA

PASO3

soldaremos todos los conectores a sus circuitos de proteccin y cablearemos hacia Arduino, Figura
92.

Figura 92: Instalacin de conectores en la placa de prototipo

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.

Figura 93: Agujeros para conectores en la caja del prototipo


103

CAPTULO 4

IMPLEMENTACIN DEL PROTOTIPO

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.

Figura 94 Detalle de los conectores en la caja del mdulo

104

PARTE I

MEMORIA

4.4.4 Resultado final


Las Figuras 95 y 96 muestran el aspecto final del mdulo MIDI.

Figura 95: Vista en perspectiva derecha

Figura 96: Vista en perspectiva izquierda

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.

5.1 Balance de objetivos


Revisando los objetivos iniciales, cabe sealar que se han conseguido satisfactoriamente. A
continuacin valoraremos cada uno de los objetivos superados durante el transcurso del
trabajo, tanto conceptuales como prcticos:

Como objetivo principal, hemos conseguido disear e implementar un instrumento


musical de percusin basado en el protocolo de comunicacin MIDI que sea capaz de
generar sonidos polifnicos con muy buenos resultados. Dentro de las caractersticas
deseadas encontramos por ejemplo conectividad, robustez y buena respuesta, por lo
que podemos concluir que ha sido un xito.

Afianzar conocimientos en el campo del audio digital y ms concretamente en los


entresijos del protocolo MIDI y sus posibilidades a la hora de elaborar controladores.

Afianzar conocimientos sobre electrnica analgica y digital.

Aprendizaje de software: durante todo el desarrollo de este TFG el aprendizaje ha sido


una constante y, sin llegar a niveles de experto, hemos adquirido conocimientos en
programas de anlisis, sntesis y generacin musical.

Elaborar un cdigo de programacin para el microcontrolador que procese, gestione y


enve datos MIDI para su uso como instrumento de percusin electrnico.

107

CAPTULO 5

CONCLUSIONES Y LNEAS FUTURAS

Modificar un instrumento real para su uso como instrumento MIDI, y adaptarlo a la

batera electrnica como un pad bizona.


Creacin de un instrumento electrnico de bajo coste que pueda usarse de manera

frecuente y sirva como medio de aprendizaje y/o produccin musical.

5.2 Lneas de trabajo futuro


Pese a que los objetivos marcados se han cumplido y la funcionalidad del prototipo es
satisfactoria, durante el desarrollo de este proyecto han ido surgiendo ideas para posibles
mejoras y modificaciones que bien por razones de tiempo o

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.

Mejoras en el mdulo controlador: implementacin de un controlador con mayores


posibilidades de configuracin por parte del usuario, usando para ello un display y
botones de seleccin donde poder modificar los parmetros de configuracin.

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.

Movilidad, un aspecto importante hoy en da es la capacidad que puede presentar


cierto instrumento a su uso sin estar sujeto a cables. En el caso de una batera
electrnica puede que no sea muy necesario, pero si disponemos de otro tipo de
controladores por ejemplo una guitarra o una flauta MIDI seran muy importantes.
Una interesante mejora sera eliminar el cable MIDI que conecta nuestro instrumento
al ordenador y realizar la conexin de manera inalmbrica, utilizando por ejemplo, la
tecnologa Bluetooth. El protocolo de comunicaciones Open Sound Control (OSC)
permite comunicar instrumentos musicales con cualquier tipo de ordenadores o PDAs
que estn equipados con Bluetooth.

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.

Disear un instrumento electrnico con unas libreras de sonidos en su memoria para


facilitar su independencia del ordenador. Para disearlo podramos un adaptador de
tarjetas SD para Arduino o usaramos un ordenador de bajo coste como puede ser
Raspberry Pi.

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

CONCLUSIONES Y LNEAS FUTURAS

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

Esquemtico Arduino Uno Rev. 3

113

Configuracin de los pines en el MCU


Atmega328P y su funcin en Arduino

Asignacin de pines del multiplexor /


demultiplexor CD4051B

114

PARTE II

PLANOS

Diagrama de flujo: ejemplo Blink

115

Diagrama de flujo: lectura voltaje analgico

116

PARTE II

PLANOS

Diagrama de flujo: deteccin de vibraciones


mediante sensor

117

Diagrama de flujo: MIDI

118

PARTE II

PLANOS

Diagrama de flujo: canal analgico

119

Diagrama de flujo: canal digital

120

PARTE II

PLANOS

Diagrama de flujo: multiplexor 6 canales

121

Diagrama de flujo: pad bizona

122

PARTE II

PLANOS

Diagrama de flujo: cambio de nota pad digital

123

Diagrama de flujo: cambio nota pad


analgica

124

PARTE II

PLANOS

Diagrama de flujo: subir bajar octava

125

Diagrama de flujo: variar el umbral


potencimetro

126

PARTE II

PLANOS

Diagrama de flujo: prototipo

127

Esquema del prototipo

128

PARTE II

PLANOS

129

Esquema de construccin pad multicapa

Esquema de construccin del pedal de


bombo

130

PARTE II

PLANOS

Esquema de construccin del pedal de


charles

Esquema de construccin stand

131

Esquema de construccin mdulo

PARTE III
PLIEGO DE CONDICIONES

PARTE III

PLIEGO DE CONDICIONES

Hardware
Ordenador
Ordenador porttil HP Pavilion Entertainment:

Procesador AMD Athlon(tm) X2 Dual-Core QL-62 2 GHz.


Sistema operativo Windows 7 Home Premium 64bits SP1.
Memoria 4096 MB RAM.
Tarjeta grfica ATI Mobility Radeon HD 3400 Series.
Disco duro Serial ATA de 300 Ghz.

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.

Microcontrolador AVR de 8 bits de bajo consumo.


Arquitectura RISC avanzada:
131 potentes instrucciones. La mayora se ejecutan en un nico ciclo de reloj.
32 x 8 registros de propsito general.
Operacin completamente esttica.
Ejecucin de hasta 20 MIPS a 20 MHz.
135

PARTE III

136

PLIEGO DE CONDICIONES

Multiplicador de dos ciclos incluido en el chip.


Memorias de datos y de programa no voltiles:
32 KBytes de flash auto-programable de sistema:
Duracin: 100.000 ciclos de lectura/escritura.
Seccin de cdigo de arranque opcional con bits de bloqueo (lock bits)
independientes:
Bootloader USB programado por defecto en la fbrica.
In-System Programming gracias al hardware on-chip boot program activado
despus del reset.
Operacin read-while-write real.
Todas las partes suministradas se reprograman con un bootloader
USB por defecto.
1 Kbytes de memoria EEPROM:
Duracin: 100.000 ciclos de lectura/escritura.
2 Kbytes de memoria interna SRAM.
Bloqueo de la programacin para seguridad del software.
Caractersticas de los perifricos:
Dos temporizadores/contadores de 8 bits con prescaler independiente y
modo compare.
Contador en tiempo real con oscilador independiente.
Seis canales PWM.
Modulador comparador de salida.
ADC de 10 bits de resolucin y 6 canales.
USART en serie programable.
Interfaz serie SPI maestro/esclavo.
Temporizador watchdog programable con oscilador independiente.
Comparador analgico.
Interrupcin y wake-up por cambio en el pin.
Caractersticas especiales del microcontrolador:
Reset power-on y deteccin de brown-out programable.
Oscilador interno calibrado.
Fuentes de interrupcin internas y externas.
Seis modos sleep: idle, ADC noise reduction, power-save, power-down,
standby y extended standby.
Entrada/salida:
23 lneas de entrada/salida programables.
Voltajes de operacin:
1,8 voltios - 5.5 voltios.
Temperatura de operacin:
Industrial (-40C a +85C).
Frecuencia mxima:
20 MHz 1,8 a 5,5V.

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 montaje de prueba


El modelo utilizado es WB-104+J de Wisher.

Tipo: placa de prueba (bread board).


Distancia entre agujeros o puntos de conexin (pitch): 2,54 mm.
Dimetro del agujero PCB: 0,8 mm.
Tipo de conector: contactos plateados de nquel.
Nmeros de agujeros: 1680.
Material: plstico ABS.
Tamao: 220 x 150 x 31 mm.

Incluye cabes para realizar las conexiones.

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.

Caja de plstico para circuitos

Dimensiones 200 x 110 x 65 mm.


Color negro.

Cable USB

Conector USB macho tipo A a macho tipo B.


Compatible con las especificaciones USB 1.0, 1.1, y 2.0.
Longitud: 1 metro.

137

PARTE III

PLIEGO DE CONDICIONES

Cable microfnico

Cable OFC blindado de 2 conductores trenzados para micrfonos y conexiones de


audio y vdeo.
Cubierta exterior: 4 mm , PVC negro.
Blindaje: 28 hilos de Cu de 0,1 mm en espiral.
2 cables: Cubierta de conductor: 1 mm , blanco o rojo.
Conductor: 10 hilos de Cu de 0,1 mm .

Cable paralelo de audio bicolor

Seccin: 2 x 1,5 mm (250/300 V de tensin).


Bicolor (rojo, negro).
Construido segn la norma UNE 21.031.

Cable para protoboard

Unifiliar: 0,2 mm.


Cubierta exterior: 1,4mm.
V mx: 60V.
I mx 4,3A.
Aislamiento en PVC.

Cable USB-MIDI

Plug and Play.


Leds de estado.
MDI IN MIDI OUT.

Conector Jack estreo macho areo 6,35 mm

Conector de 6,3 mm.


Material capuchn: plstico.

Conector Jack esttreo hembra areo 6,35 mm

Conector de 6,3 mm.


Material capuchn: plstico.

Conector Jack hembra mono 6,35mm

138

Jack Hembra 6,35 mm.


Mono.
Para chasis.

PARTE III

PLIEGO DE CONDICIONES

Conector Jack hembra estreo 6,35 mm

Jack Hembra 6,35 mm.


Estreo.
Para chasis.

Conector DIN 5

Tipo : montaje en chasis.


5 contactos disposicin 45 .
Conexiones a soldar.

Sensor piezoelctrico

Tipo De Tono: Transmisin Exterior.


Alimentacin: 3-28 Vac.
Tensin Nominal: 5 Vac.
Consumo De Corriente: 1,5 mA.
Frecuencia De Resonancia: 4.0 0.5 Khz.
Nivel De Presin Sonora: 85db.
Tipo De Conexin: Cables.
Color De La Caja: Negro.
Peso: 4 g.

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.

Diodo zener 5,1V - 1,3W

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.

BFD2 (versin demo)


Simulador de bateras acsticas con la ventaja de poder funcionar en modo stand alone. La
versin de prueba es gratuita.

Apache Open Office 3.4.1


Procesador de textos con el que hemos realizado la memoria.

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.

Precio unidad Precio total


()
()

Ordenador porttil HP Pavilion


Entertainment.
- Dual-Cre QL-62.
- S.O. Windows 7.
- 4GB de memoria RAM.
- 300GB de disco duro.

HP

58,33

58,33

Placa de desarrollo Arduino Uno


Rev.3
- Microcontrolador Atmega328.
- 32KB de Memoria Flash.
- Velocidad de reloj: 16MHz.

Arduino

22,15

22,15

Placa de montaje de prueba


- 1680 puntos de conexin.
- Pitch de 2,54mm.
-Incorpora cables para realizar
conexiones.

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

Cable USB A-B


- Longitud: 1 metro.

Cables To
Go

6,37

6,37

Cable microfnico.

Velleman

20

0,4

Utilizado en este proyecto: 7%

(Contina en pgina siguiente)


145

PARTE IV

PRESUPUESTO

Concepto

Fabricante Uds.

Precio unidad Precio total


()
()

Cable paralelo audio bicolor.

Velleman

0,79

0,79

Juego de cables para protoboard.

Velleman

9,4

9,4

Cable MIDI-USB

Leem

15,8

15,8

Conector Jack ST macho areo

ValueLine

22

0,39

8,69

Conector Jack mono hembra chasis

ValueLine

22

0,59

12,98

Conector Jack ST hembra areo

Neutrik

1,98

1,98

Conector Jack ST hembra chasis

ValueLine

0,71

0,71

Conector DIN 5 chasis

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

Subtotal Hardware 21% IVA

241,20

146

PARTE IV

PRESUPUESTO

HERRAMIENTAS Y MATERIALES DE
CONSTRUCCIN
Concepto

Fabricante

Uds. Precio unidad


()

Precio total ()

Polmetro

Velleman

12,56

12,56

Soldador

Velleman

10,19

10,19

Estao

Velleman

2,13

2,13

Tubo termo retrctil

Velleman

0,63

0,63

Tabln de madera TDM


- 800x400x10mm

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

Espuma de poliuretano 10mm

7,9

7,9

Tubo PVC 32mm

EPE

2,25

Codo PVC 32mm

EPE

0,56

3,36

Conector T PVC 32mm

EPE

16

0,92

14,79

Tapn PVC 32mm

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

Lija madera fina

Debray

0,35

0,35

Alicates de corte

Bricotrap

1,5

1,5

Alicates de punta plana

Bricotrap

1,2

1,2

(Contina en pgina siguiente)


147

PARTE IV

PRESUPUESTO

Concepto

Fabricante

Uds. Precio unidad


()

Precio total ()

Bisagra

Bricotrap

0,4

0,8

Tornillo y tuercas 0,8mm

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

Hoja de sierra de calar

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

Subtotal Herramientas y materiales de construccin

130,70

Subtotal Herramientas y materiales de construccin + 21% IVA

158,14

148

PARTE IV

PRESUPUESTO

PROYECTO

Concepto

N de horas

/hora

Total

Honorarios aprendizaje

240

15

3600

Honorarios ingeniero

60

55

3300

Copia del proyecto

50

Subtotal TFG

6950

Subtotal TFG + 21% IVA

8409,5

149

PARTE IV

PRESUPUESTO

PRESUPUESTO GLOBAL

Concepto

Total

Hardware

199,34

Herramientas y materiales de construccin

130,7

Proyecto

6950

Subtotal

7280,04

IVA (21%)

1528,8

Total

8808,84

150

BIBLIOGRAFA

BIBLIOGRAFA

Arduino. Examples en URL: http://arduino.cc/en/Reference/HomePage (Recuperado


el 15 de mayo de 2014).

Arduino. Language Reference en URL: http://arduino.cc/en/Reference/HomePage


(Recuperado el 18 de mayo de 2014).

Atmel Corporation. Atmega328P Datasheet. 2009. (Recuperado el 20 de febrero de


2014).

Fxpansion. BFD2 en URL: http://www.fxpansion.com/index.php?page=53&tab=152


(Recuperado el 15 de febrero de 2014).

Hairless MIDI < - > Serial Bridge (2011). Hariless en URL:


http://projectgus.github.io/hairless-midiserial/ (Recuperado el 20 de marzo de 2014).

HANSEN, B. Musical Instrument Digital Interface (MIDI) en URL:


http://www.hansenb.pdx.edu/pdf/MIDI.pdf (Recuperado el 14 de marzo de 2014).

Interaction Design Lab (16 noviembre 2012). Fritzing en URL: http://fritzing.org/


(Recuperado el 10 de abril de 2014).

MIDI-OX. MIDI-OX en URL: http://www.midiox.com/ (Recuperado el 25 de febrero


de 2014).

Nerds.de (2012). LoopBe1 en URL: http://www.nerds.de/en/loopbe1.html


(Recuperado el 20 de Marzo de 2014).

Roland Corporation. V-Drums en URL: http://www.roland.com/V-Drums/


(Recuperado el 15 de abril de 2014).

SERGI, J. Gua de Audio Digital y MIDI en URL:


http://www.ccapitalia.net/reso/articulos/audiodigital/ (Recuperado el 14 de marzo de
2014).

151

BIBLIOGRAFA
Salahovic, A (2009). Edrum en URL: http://www.edrum.info/ (Recuperado el 7 de
abril de 2014).

Texas Instruments. CD4051B Datasheet. Marzo 2000. (Recuperado el 7 de abril de


2014).

Tuelectronica. Resistencia pull-up y pull-down en URL:


http://www.tuelectronica.es/tutoriales/electronica/resistencia-pull-up-y-pull-down.html
(Recueprado el 10 de marzo 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).

Universidad Tecnolgica Nacional, Facultad Regional San Nicols. Curso de


programacin en C en URL: http://www.frsn.utn.edu.ar/tecnicas3/manuales/Curso
%20de%20programacion%20en%20C.pdf (Recuperado el 20 de febrero de 2014).

Wikibooks (12 abril 2013). Acoustics/Piezoelectric Transducers en URL:


http://en.wikibooks.org/wiki/Acoustics/Piezoelectric_Transducers (Recuperado el 10
de marzo 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

ANEXO 1. Gua de programacin Arduino


Para poder entender la sintaxis y los cdigos diseados en este proyecto, as como todas las
funciones que se van a utilizar, mostramos una pequea gua de consulta sobre la
programacin en Arduino.
ESTRUCTURA DE UN SKETCH
setup()
loop()
Funciones
{} entre llaves
; punto y coma
/* */ bloque de comentarios
// linea de comentarios
VARIABLES
Declaracin de variables
Utilizacin de una variable
TIPOS DE DATOS
byte
int
long
float
arrays
ARITMTICA
Asignaciones compuestas
Operadores de comparacin
Operadores lgicos
CONSTANTES
Cierto/falso (true/false)
high/low
input/output
CONTROL DE FLUJO
if (si condicional)
if else (si.. sino ..)
for
while
do while

153

GUA DE PROGRAMACIN ARDUINO


E/S DIGITALES
pinMode(pin, mode)
digitalRead(pin)
digitalWrite(pin, value)
E/S ANALGICAS
analogRead(pin)
analogWrite(pin, value)
CONTROL DEL TIEMPO
delay(ms)
millis()
MATEMTICAS
min(x, y)
max(x, y)
COMUNICACIN SERIE
Serial.begin(rate)
Serial.println(data)
Serial.print(data, data type)
Serial.avaible()
Serial.Read()

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()

La fucin setup() se invoca unicamente cuando el programa arranca. Se utiliza para


inicializar los modos de trabajo de los pines, el puerto serie o establecer el estado inicial de las
salidas de la placa. Esta funcin debe incluirse aunque no haya ninguna declaracin que
ejecutar.
void setup()
{
pinMode(pin, OUTPUT); // configura el 'pin' como salida
digitalWrite(pin, HIGH); // pone el pin en estado HIGH
}
loop()

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

GUA DE PROGRAMACIN ARDUINO


tipo nombreFuncin(parmetros)
{
instrucciones;
}
{} entre llaves

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;

// 'value' es visible para cualquier funcin

void setup()
{
}
void loop()
{
for (int i=0; i<20;)

//'i' solo es visible dentro del bucle


//for

{
i++;
}
float f;
}

// 'f' es visible slo dentro de loop()

157

GUA DE PROGRAMACIN ARDUINO

TIPOS DE DATOS
A continuacin mostramos los tipos de datos con los que trabajar:
byte

Almacena un valor numrico de 8 bits sin decimales [0,255]


int

Almacena valores numricos de 16 bits [32767,-32768]


Las variables de tipo entero pueden sobrepasar su valor, por ejemplo si x=32767 y se le suma
1 el resultado ser -32768.
long

Se refiere a nmeros enteros de 32 bits [-2147482648,2147483647 ]


float

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

miArray[3] = 10; // asigna el valor 10 a la posicin 4


Para leer datos de un array necesitamos escribir el nombre y la posicin a leer:
x = miArray[3];

158

// significa que ahora x es igual a 10 que


// se encuentra en la
// posicin 3 del array

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

GUA DE PROGRAMACIN ARDUINO


if (b == TRUE);
{
ejecutar las instrucciones;
}
High/low

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)

if es un estamento que se utiliza para probar si una determinada condicin se ha alcanzado,


como por ejemplo averiguar si un valor analgico est por encima de un cierto nmero, y
ejecutar una serie de declaraciones (operaciones) que se escriben dentro de llaves, si es
verdad. Si es falso (la condicin no se cumple) el programa salta y no ejecuta las operaciones
que estn dentro de las llaves, El formato para if es el siguiente:
if (unaVariable ?? valor)
{
ejecutaInstrucciones;
}

160

ANEXO 1
if else (si.. sino ..)

if else viene a ser un estructura que se ejecuta en respuesta a la idea si esto no se


cumple haz esto otro. Por ejemplo, si se desea probar una entrada digital y hacer una cosa si
la entrada est a nivel alto o hacer otra cosa si la entrada es baja, se escribira de esta manera:
if (inputPin == HIGH)
{
instruccionesA;
}
else
{
instruccionesB;
}
Else puede ir precedido de otra condicin de manera que se pueden establecer varias
estructuras condicionales de tipo unas dentro de las otras (anidamiento), de forma que sean
mutuamente excluyentes pudindose ejecutar a la vez. Es incluso posible tener un nmero
ilimitado de estos condicionales.
if (inputPin < 500)
{
instruccionesA;
}
else if (inputPin >= 1000)
{
instruccionesB;
{
else
{
instruccionesC;
}

161

GUA DE PROGRAMACIN ARDUINO


for

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)

Se utiliza esta instruccin en la parte de configuracin del setup() y su funcin es


configurar el modo de trabajo de un pin pudiendo ser INPUT (entrada) u OUTPUT (salida).
pinMode(pin, OUTPUT);

//configura pin como salida

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);

// configura el pin como

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);

// valor ser igual al estado


//ledo en 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);

// deposita en el 'pin' un valor


//HIGH (alto o 1)

163

GUA DE PROGRAMACIN ARDUINO

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);

// asigna a valor lo que lee en


//la entrada pin'

analogWrite(pin, value)

Esta instruccin sirve para escribir un pseudo-valor analgico utilizando el procedimiento de


modulacin por ancho de pulso (PWM) a uno de los pines de Arduino marcados como pin
PWM. El valor que se puede enviar a estos pines de salida analgica puede darse en forma
de variable o constante, pero siempre con un margen de 0-255.
analogWrite(pin, valor);

//
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.

CONTROL DEL TIEMPO


delay(ms)

Retrasa la ejecucin del programa la cantidad de tiempo en milisegundos que se indique en la


instruccin.
Delay(1000);

// espera 1 segundo

milis()

Devuelve el nmero de milisegundos transcurrido desde el inicio del programa en Arduino


hasta el momento actual. Este nmero de desbordar si no se resetea de nuevo despus de
aproximadamente 9 horas.

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

// abre el Puerto serie


// configurando la velocidad en 9600

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

GUA DE PROGRAMACIN ARDUINO


Serial.print(data, data type)

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

You might also like