Está en la página 1de 60

Arduino para

músicos

Rodrigo S. A.

circuitos, detalles y código


Importante

Este libro se encuentra registrado en Derecho de Autor y posee


tramitación de ISBN en curso. El libro no puede ser copiado total o
parcialmente sin autorización de la editorial y el autor. Siendo un
material de referencia, la editorial y el autor no son responsables
por el montaje de los proyectos. Se recomienda supervisión absoluta
de un mayor de edad.
Prólogo

Durante mi infancia todo parecía estar


departamentalizado. O eras músico o eras nerd,
pero esos dos mundos o “departamentos” no
se tocaban en ningún punto. Entonces uno se
enfrentaba a una encrucijada. Así fue que pasé
una cantidad de años con soldadores, circuitos y
computadoras y después cuando entré al colegio
secundario, fui por las guitarras, amplificadores
y partituras. Me costó bastante tiempo darme
cuenta de algo obvio: todos los intereses que
uno tiene, bien balanceados suman y por otro
lado, la música es una forma de tecnología si se
quiere. La definición de hecho no me contradice:
“Conjunto de instrumentos, recursos técnicos o
procedimientos empleados en un determinado
campo o sector” Desde ese momento fui un nerd en

1
Arduino para músicos

la música y un músico en la tecnología, abriendo


un abanico de posibilidades que parecían veladas
y conectándome con una comunidad de gente que
también había optado por sumar en sus intereses
y que sabían apreciar una canción con una base
rítmica de sonidos Chiptune o un pre amp creado
con válvulas de un viejo televisor.

Cuando empecé con la maravillosa


placa Arduino, parecía algo muy alejado de las
posibilidades musicales. La placa estaba siendo
utilizada para prender y apagar Leds y sus
posibilidades de emitir sonidos eran demasiado
rústicas para proponer algo interesante en
la música. Y luego fue sucediendo ya sea en
hardware con la aparición de ciertas placas, hats
y anexos como en software con potentes librerías
de audio al punto en que hoy las posibilidades
para hacer música con Arduino son muchísimas,
una más divertida y desafiante que la otra.

¿Hace falta saber mucho de electrónica o


programación para leer este libro y completar los
proyectos? Como en cualquier rubro tener más
conocimientos ayuda, pero tener menos no va a

2
Arduino para músicos

dificultar en montar los proyectos y seguro que


nuevos conocimientos se van a ir transmitiendo.

Este es mi tercer libro de Arduino y voy


a aplicar la misma filosofía que con los otros:
“learn by doing” o “aprender haciendo” Acá no
va a haber teoría descolgada de su aplicación
práctica, sino que cada concepto está relacionado
concretamente a los proyectos que aparecen y se
pueden completar.

Al igual que con los otros libros, en este no


hay nada “sagrado” Se trata de probar, entender,
jugar y adaptar. Siempre me sorprende ver
hasta dónde pueden llegar las modificaciones e
inspiraciones de los lectores. ¿Listo para empezar?
Ahí vamos.

Rodrigo S. A.

Ante consultas por la agenda


de dictado de cursos y clases
de Arduino en México, España,

3
Arduino para músicos

Argentina o Estados Unidos o el


armado de proyectos a medida
pueden comunicarse con la
editorial steadmanthompson@
gmail.com quien me reenviará
los datos de contacto

4
Arduino para músicos

Qué es arduino

Arduino es una plataforma electrónica de


código abierto basada en hardware y software
fácil de utilizar. Las placas Arduino permiten leer
entradas como por ejemplo un dedo presionando
un interruptor o bien la humedad del ambiente
y convertir esto en una salida como por ejemplo,
encender una luz o publicar un Tweet. Para
indicarle al Arduino qué hacer se le otorgan
una serie de instrucciones en lenguaje de
programación Arduino al microcontrolador de la
placa.

El proyecto Arduino comenzó en el año


2003 como un programa para estudiantes
en… Italia ¿Quién lo hubiera dicho? A mí
particularmente no me extraña dado que Italia es
un país con muchísimos logros en todas las áreas,

5
Arduino para músicos

artes, industria, etc. El nombre de hecho viene


de un bar en Ivrea, Italia, donde se juntaban los
fundadores.

La placa original la fabrica Smart Projects


en Italia, pero también hay modelos lanzados por
SparkFun Electronics y Adafruit Industries.

El hecho de haber lanzado Arduino bajo


licencia Open Source logró que fuera el centro de
numerosos proyectos de todo tipo: desde hobbys
personales, hasta complejos sistemas científicos.
Asimismo logró una competencia de precios tal
que hoy en día es muy, pero muy económico
comprar una placa Arduino.

6
Arduino para músicos

Variantes de arduino
Las placas Arduino más comunes son:

Arduino UNO
Es el punto de entrada a Arduino. Por su
tamaño es fácil de manipular. No hace falta soldar
y trae conectores muy sencillos. Trae memoria
flash de 32KB, EEPROM de 1KB y 2KB de SRAM.
Trae 14 pines de Input Output digitales, 6 inputs
analogicos y una línea de comunicación serial.

Arduino Mega
La principal diferencia son las
características técnicas. Esta placa trae 256kb
de memoria flash programable. 8KB de RAM
y 4KB de SRAM. Por parte de los pins trae 54

7
Arduino para músicos

pins digitales que pueden ser utilizados como


Input o Output. 16 pins análogos y 4 líneas de
comunicación serial.

Arduino Nano
Es más económica y chica que el Arduino
Uno. Trae 14 pines digitales y 6 analógicos. Una
de sus versiones con ATmega168 tiene 0.512KB
EEPROM, 1KB SRAM y 16kb Flash. La otra con
ATmega328P tiene 1KB EEPROM, 2KB SRAM y
32kb Flash.

Arduino Lilypad
Tiene un diseño circular plano y se suele
utilizar para crear dispositivos que “se visten”
En este libro no hay proyectos con esta placa.
En cualquier caso sus especificaciones son
Procesador ATmega168V 6 inputs análogas. 14
IO 6 PWM digitales. 0.512KB EEPROM, 1 SRAM,
16KB Flash.

Arduino Pro Micro

8
Arduino para músicos

Procesador ATmega32U4 con HID


interface para simular operaciones de teclado y
mouse. 5 PWM pins, 12 inputs/outputs digitales.

Arduino MKR Wan 1300


Conectividad LORA, Atmel SAMD21 y
módulo Murata CMWX1ZZABZ Lo-Ra. La
placa puede ser alimentada por 2 pilas AA o AAA
o bien entrada de 5V. A diferencia de las otras
placas Arduino, esta placa usa 3.3V en los pines.
Clock 32.768 kHz (RTC), 48 MHz Quizás su
principal función sea la conectividad LORA, que
se trata de una red inalámbrica de baja potencia
y área amplia (10-20KM) sobre dispositivos
de bajo consumo. Un proyecto interesante con
LORA es adaptar el tracker GPS de la edición
anterior para que comunique su ubicación vía
LORA.

Arduino MKR Zero


Procesador SAMD21 Cortex-M0+
32bit ARM MCU, 256 KB flash, 32 KB SRAM.
Soporta batería Li-Po single cell, 3.7V, 700mAh

9
Arduino para músicos

minimum. Es una placa ideal para proyectos


de audio y música dado que trae un lector de
tarjetas microSD y permite reproducir audio sin
hardware adicional por medio de la nueva librería
https://arduino.cc/en/Reference/ArduinoSound
Asimismo trae incorporado un Real Time Clock
para ejecutar funciones en cierta hora o bien
grabar la hora en logs.

Luego hay dos placas muy populares que


no son oficialmente Arduino, pero que pueden
ser tomadas como tales.

La ESP8266/NodeMCU, que vendría a ser


un Arduino + WiFi y la Heltec que es Arduino +
WiFi + Display Oled.

En este libro voy a usar las placas que sean


más adecuadas para cada proyecto.

10
Arduino para músicos

Requerimientos

Cada proyecto tiene sus propios


requerimientos. Es importante notar en principio
qué clase de placa Arduino hace falta. Para muchos
proyectos es suficiente con Arduino Nano, pero
algunos tienen requisitos particulares.

Si bien la mayoría de los proyectos pueden


montarse provisoriamente en un breadboard –
placa para hacer conexiones con cables cuyos
extremos son pines - sin necesidad de soldar, se
recomienda tener también un soldador y estaño
a fin de poder montar mejor cada circuito y
eventualmente poder agregarles un gabinete.

En cuanto a los gabinetes, varios proyectos


incluyen archivos para imprimir los mismos en
impresoras 3D. Si tenés impresora 3D perfecto.

11
Arduino para músicos

En caso contrario, podés enviar los archivos a


cualquier empresa que haga impresiones 3D y en
última instancia podés arreglartelas con cartón,
acrílico, madera o cajas genéricas de proyectos
electrónicos para crear tus propios gabinetes. Sin
ir más lejos, antes de tener una impresora 3D, en
varios de mis propios proyectos usaba madera o
cartón y plasticola.

¿Qué impresora 3D conviene comprar? Hay


muchos modelos, pero recomiendo especialmente
alguna basada en el modelo Prusa. Link españa
https://amzn.to/2STRa8j Link EEUU https://
amzn.to/38vmXDj

12
Arduino para músicos

Proyectos del libro


Tal como se dijo anteriormente, si bien
tiene algo de teoría explicada, este es un libro
con la premisa de aprender haciendo. Ya desde
el primer proyecto es posible entender muchos
conceptos y como si fuera poco, el sonido va a
empezar a aparecer.

Debajo, la lista completa de los proyectos


contenidos en el libro.

Micro Piano
Con un Arduino, un buzzer y unos botones
es suficiente para crear un mini piano, capaz de
tocar notas precisas y arpegiar. Quizás el sonido
no sea tan singular, pero sirve para entender
algunas nociones básicas como la detección de
pulsaciones.

13
Arduino para músicos

Caja de música
Con casi el mismo hardware las melodías
se almacenan y son disparadas en un lindo objeto
para regalar con una canción en común con el
homenajeado.

Sintetizador
En este proyecto se incorpora la potente
librería Mozzi para generar sonidos sintetizados
en base a 3 potenciómetros.

Jukebox
Ya sabemos cómo tocar sonidos en
Arduino con un Buzzer. Ahora qué tal aprender
a reproducir MP3. Si bien este es un reproductor,
sus mismos principios pueden ser utilizados
para crear por ejemplo un módulo de caja de
ritmos o acompañamientos sampleados para un
instrumento más complejo.

14
Arduino para músicos

Dancing head
Este proyecto no genera música, pero
“escucha música” ya que usa un módulo de
detección de audio de tal forma en que el Arduino
escuche sonidos fuertes y mueva la cabeza de un
muñeco para acompañar el ritmo.

Sequencer
Con principios parecidos al proyecto
anterior, pero ahora sumando la posibilidad de
grabar los sondidos que van en cada beat. La
entrada puede ser realizada con un joystick retro
o un potenciómetro y un botón.

Power Theremin
El Theremin es un curioso instrumento
que permite tocar notas con los movimientos de
las manos. Con Arduino y otras partes es posible
desarrollar un Power Theremin con selector de
escalas y ciertos efectos.

15
Arduino para músicos

Caja de ritmos
Ya es tiempo de hacer sonar al Arduino
“en serio” con esta caja de ritmos parametrizada.
Tempo configurable en tiempo real y cuatro
potenciómetros para controlar los sonidos de
cada beat.

16
Arduino para músicos

Notas y frecuencias
Este capítulo tiene cierta importancia,
pero es puramente teórico. Si te perdés con la
información, podés seguir adelante y en todo
caso volver a consultarlo cuando veas una parte
del código que haga referencia a frecuencias en
lugar de notas.

Cada nota tiene una frecuencia que se


mide en Hertz. Los Hertz son la cantidad de
vibraciones por segundo.

Ejemplo: hay cierta convención de afinar


con la nota A en la frecuencia de 440HZ, es decir
que el La vibre a 440 veces por segundo.

Esto no está “soldado” de


esta manera, sino que es una

17
Arduino para músicos

convención. Es posible afinar el


La en 432 y ajustar luego el resto
de las notas a esta frecuencia
de 432. Sin embargo es lo más
común actualmente usar La 440.

El ser humano puede percibir frecuencias


de entre 20 y 20.000 Hz aproximadamente,
conformando algo llamado “espectro audible”
Los infrasonidos – por debajo de los 20Hz -
pueden ser percibidos por ciertos animales como
elefantes y ballenas y los ultrasonidos – por
encima de los 20.000 Hz - por otros como delfines
y murciélagos.

En la cultura occidental las notas musicales


son 7: do, re, mi, fa, sol, la, si. Y con sus semitonos
12: do, do# re, re#, mi, fa, fa#, sol, sol#, la, la #, si ,
pero en otras culturas, hay más notas intermedias,
por ende más frecuencias que se toman en cuenta.

La relación entre las notas es llamado


intervalo y la percepción de lo que “suena bien”
combinando estos intervalos y lo que “no suena

18
Arduino para músicos

bien” tampoco es rígido ni está “soldado” sino que


es cultural.

Debajo sigue unas tablas con las notas


y sus frecuencias. Esto es de utilidad para los
proyectos dado que en la mayoría de las veces,
desde el código Arduino se hace referencia a estas
frecuencias.

Primera octava
Do 1: 65,406 Do# 1: 69,296 Re 1: 73,416
Re# 1: 77,782 Mi 1: 82,407 Fa 1: 87,307 Fa# 1:
92,499 Sol 1: 97,999 Sol#1: 103,826 La 1: 110 La#
1: 116,541 Si 1: 123,471

Segunda octava
Do 2: 130,813 Do# 2: 138,591 Re 2: 146,832
Re# 2: 155,563 Mi 2: 164,814 Fa 2: 174,614 Fa# 2:
184,997 Sol 2: 195,998 Sol#2: 207,652 La 2: 220
La# 2: 233,082 Si 2: 246,942

19
Arduino para músicos

Tercera octava
Do 3: 261,626 Do# 3: 277,183 Re 3: 293,665
Re# 3: 311,127 Mi 3: 329,628 Fa 3: 349,228 Fa# 3:
369,994 Sol 3: 391,995 Sol#3: 415,305 La 3: 440
La# 3: 466,164 Si 3: 493,883

Cuarta octava
Do 4: 523,251 Do# 4: 554,365 Re 4: 587,33
Re# 4: 622,254 Mi 4: 659,255 Fa 4: 698,456 Fa# 4:
739,989 Sol 4: 783,991 Sol#4: 830,609 La 4: 880
La# 4: 932,328 Si 4: 987,767

Quinta octava
Do 5: 1046,502 Do# 5: 1108,731 Re 5:
1174,659 Re# 5: 1244,508 Mi 5: 1318,51 Fa
5: 1396,913 Fa# 5: 1479,978 Sol 5: 1567,982
Sol#5: 1661,219 La 5: 1760 La# 5: 1864,655 Si 5:
1975,533

Sexta octava
Do 6: 2093,005 Do# 6: 2217,461 Re 6:

20
Arduino para músicos

2349,318 Re# 6: 2489,016 Mi 6: 2637,02 Fa 6:


2793,826 Fa# 6: 2959,955 Sol 6: 3135,963 Sol#6:
3322,438 La 6: 3520 La# 6: 3729,31 Si 6: 3951,066

Septima octava
Do 7: 4186,009 Do# 7: 4434,922 Re 7:
4698,636 Re# 7: 4978,032 Mi 7: 5274,041 Fa 7:
5587,652 Fa# 7: 5919,911 Sol 7: 6271,927 Sol#7:
6644,875 La 7: 7040 La# 7: 7458,62 Si 7: 7902,133

Octava octava
Do 8: 8372,018 Do# 8: 8869,844 Re 8:
9397,273 Re# 8: 9956,063 Mi 8: 10548,082 Fa
8: 11175,303 Fa# 8: 11839,822 Sol 8: 12543,854
Sol#8: 13289,75 La 8: 14080 La# 8: 14917,24 Si
8: 15804,266

21
Arduino para músicos

Montaje de los proyec-

tos

Armar la electrónica

Tras conseguir los requerimientos, la


primera parte consiste en armar la electrónica.
Ya sea en un breadboard – que es una placa con
conectores temporales a fin de evitar soldaduras
– o definitivamente los cables soldados, recién
cuando está todo conectado al Arduino se pasa
al paso siguiente que consiste en subir el código.

Instalar el Arduino IDE

Para subir el código de programación

22
Arduino para músicos

al Arduino es necesario utilizar un software


llamado Arduino IDE. El mismo se descarga
gratis desde la web https://www.arduino.cc/en/
Main/Software En el caso que tras la edición de
este libro la dirección hubiera cambiado, basta
con realizar una pequeña búsqueda online para
averiguar la nueva dirección para la descarga
gratuita del software. El software viene en tres
versiones: Windows, Linux y MacOs. En el caso
de Linux es importante verificar los permisos del
puerto USB. En el caso de Windows y MacOs no
hay mayores inconvenientes.

Configurar el Arduino IDE

Los dos aspectos a configurar son: el tipo


de placa Arduino y el puerto USB a utilizar.
Tras conectar el Arduino a la computadora, el
IDE va a mostrar los puertos disponibles en la
pestaña Herramientas/Puerto. Basta con ir ahí
y seleccionar el Puerto al que se conectó el cable
USB. Si hay varios, ir probando de a uno. En
cuanto al tipo de placa, esta se selecciona desde
Herramientas/Placa.

23
Arduino para músicos

Para Arduino MKRZero hace falta ir al


Boards Manager y descargar SAM Boards.

Copiar el código al Arduino IDE

Si bien es posible tipear cada línea de


código de cada proyecto en la pestaña de
código del Arduino IDE, lo mejor es descargar
los archivos .ino y no tener que tipear. Por otro
lado se descartan errores de tipeo dado que los
archivos a descargar están probados.

Para obtener los archivos de cortesía


de Arduino IDE, PHP y los gabinetes de
impresión 3D basta con escribir un comentario
del libro en Amazon y luego enviar un email a
steadmanthompson@gmail.com

Los links para los comentarios son:


Amazon.com http://www.amazon.com/
review/create-review?&asin=B0882N5MQS

24
Arduino para músicos

Amazon México http://www.amazon.com.


mx/review/create-review?&asin=B0882N5MQS

Amazon España http://www.amazon.es/


review/create-review?&asin=B0882N5MQS

Depuración de errores

Si bien el código de estos proyectos fue


probado, es posible que se produzca algún error
ya sea de tipeo o bien al intentar modificar los
proyectos. En cualquier caso es bueno saber
que Arduino puede ir dando mensajes a la
computadora a través de una comunicación
serial. Todos los proyectos tienen código para
ir informando por serie el punto de ejecución
y la forma de visualizar esto es ir al Arduino
IDE, Herramientas, Monitor Serial. Luego es
necesario comprobar que la velocidad indicada
en el código sea la misma que la indicada en el
selector desplegable del Arduino IDE y luego irán
apareciendo los mensajes que entrega el Arduino
cuando se ejecuta el código. En el ejemplo que
sigue debajo, la velocidad es 9600 y al ser ejecutado
imprimirá “Arduino iniciado” en la ventana de

25
Arduino para músicos

monitor serial.

Serial.begin(9600);
Serial.print(“Arduino iniciado”);

Agregado de librerías

Ciertos proyectos necesitan librerías


externas que deben ser descargadas de Internet
e instaladas en la computadora donde reside
el Arduino IDE. Un ejemplo de código que
necesitaría una librería es la línea

#include <LibreriaABC.h>

Si al enviar el código al Arduino, el IDE


indica que no puede encontrar LibreriaABC.h, es
necesario descargarla de Internet, descomprimirla
si el archivo descargado es un archo ZIP y luego
copiarlas a ciertas carpetas

En Windows a: Documents\Arduino\
libraries.
En MAC a: Documents/Arduino/libraries

26
Arduino para músicos

Sobre los gabinetes para imprimir en 3D

En el caso que se necesiten los archivos de


los gabinetes para imprimir en 3D, tras cargar un
comentario del libro en Amazon y escribir a la
editorial steadmanthompson@gmail.com vas a
recibir los archivos respectivos.

27
Arduino para músicos

Hardware del Arduino

Las patas del microcontrolador – por


ejemplo el ATMega328 – se conectan a unos
pines llamados header sockets. Estos se dividen
en tres grupos principales: pines digitales, pines
análogos y pines de corriente.

Estos pines transfieren voltaje y son


importantes porque permiten conectar fácilmente
circuitos, sensores y otros dispositivos al Arduino
para crear proyectos de todo tipo.

Pines digitales
Como su nombre lo indica, permiten
enviar o recibir señales digitales. Es decir que
admiten uno de dos estados: encendido o apagado,
traducidos en 0 o 5V (o bien 0 o 3.3v en ciertas

28
Arduino para músicos

placas)

Pines analógicos de entrada


Se usan para recibir valores analógicos
entre 0 y 5v. El valor concreto puede ser cualquiera
en el medio: 0.1, 2.3v, etc

Pines analógicos de salida


Si bien Arduino parece no tener pines de
salida analógicos, en realidad sí los tiene, pero
disfrazados en pines digitales marcados como
PWM. En algunas placas figuran con el símbolo
~ PWM quiere decir pulse-width modulation.
PWM es una técnica para dar la impresión de
una salida analógica utilizando pines digitales.
La técnica es sencilla: si bien la salida solo puede
tomar 0/1, se hacen cambios muy rápidos entre
estos estados. Si la salida está prendida el 50% del
tiempo, tiene 50 de duty cycle. Esto representa
el porcentaje de tiempo en que la salida está
activa y puede tener cualquier valor porcentual,
por ejemplo 20%. Si se aplica a un led, el led va a
tener menor potencia porque el ojo humano llega

29
Arduino para músicos

a captar así esos cambios porcentuales. Con un


motor, la velocidad de rotación va a ser más lenta.

Pines de corriente
VIN quiere decir Voltage In y se puede
utilizar para darle corriente al Arduino, GND
quiere decir ground o tierra. 5v quiere decir salida
de 5v y 3V salida de 3.3v para potenciar circuitos
externos.

Leds del Arduino


Los leds estándar del Arduino son los
siguientes. Led verde: led de encendido. Led de
RX y TX: datos transmitidos hacia y desde el
Arduino. L es el Led interno, conectado al pin13,
pero puede ser otro pin dependiendo de la placa
utilizada.

Nota: los proyectos del libro


utilizan pines digitales para
emitir audio. En el caso de los
buzzers, cualquier pin puede
30
Arduino para músicos

ser configurado para este fin.


En el caso de los proyectos
que usan librería Mozzi, el pin
D9 es utilizado y por lo tanto
no debe ser conectado a otros
dispositivos.

31
Arduino para músicos

Buzzers y parlantes

En los primeros proyectos del libro se


va a utilizar un buzzer para emitir sonido. En
los proyectos más avanzados del libro, habrá
una salida de audio del Arduino que irá a un
amplificador y finalmente a un parlante. Este
capítulo explica brevemente cómo funciona uno
y otro, lo cual sirve para comprender detalles de
la integración electrónica de los proyectos.

Buzzers y parlantes son transductores


electroacústicos, un término sofisticado para
indicar que son dispositivos que convierten
señales eléctricas en sonido.

Los buzzers son transductores

32
Arduino para músicos

piezoeléctricos. Varían su volumen al ser


atravesados por electricidad. En este caso una
membrana vibra cuando recibe electricidad. Los
buzzers son pequeños, baratos, durables y de bajo
consumo. ¿Cuál es la contra? El audio es de baja
calidad.

Los parlantes por su parte funcionan con


magnetismo. De acuerdo al magnetismo unas
bobinas hacen vibrar una membrana que produce
el sonido.

En cuanto a la conexión con Arduino, los


buzzers se conectan a Ground y a un pin digital.
Los parlantes, en los proyectos que usan la
librería Mozzi, se conectan al Pin 9 y a Ground,
pero aún así necesitan un amplificador.

La función de programación para hacer


sonar un Buzzer es

tone(pin, freq);

Es decir que se indica el pin donde está

33
Arduino para músicos

conectado el buzzer y luego la frecuencia.

Acerca de la fidelidad del sonido

Los proyectos del libro van de menor a


mayor. Esto se aplica tanto para la complejidad
de la electrónica y la programación, como para
la calidad de sonido. El primer proyecto de
micro piano usa un buzzer, a fin de simplificar la
comprensión de la programación, de no necesitar
amplificación y de que las conexiones sean
menores. Obviamente que la calidad de sonido de
un buzzer es muy baja ya que fue diseñado para
emitir alertas sonoras, no para tocar el Minuet de
Bach. Ya con la incorporación de la librería Mozzi
y el uso de jacks de salida de audio, la calidad de
sonido de los proyectos mejora notablemente.
Esto es así en la caja de ritmos, el secuencer y el
Theremin.

34
Arduino para músicos

Programación del Ardu-

ino
Este capítulo puede ser pasado por alto
en el caso que solo te interese llevar adelante los
proyectos del libro tal como están. Ahora bien, si
te interesa aprender a modificar los proyectos y
llevar adelante los tuyos, es imperativo conocer
algo sobre la programación del Arduino.

Partes de un código Arduino

En principio, cualquier código Arduino


consta de dos partes: setup y loop. La primera
parte solo se ejecuta una vez y como su nombre lo
indica contiene el “setup” o la configuración inicial.
La segunda parte se ejecuta repetitivamente o

35
Arduino para músicos

bien en “loop”.

Esto es importante para determinar


adónde colocar qué partes de nuestro código. En
el primero de los proyectos por ejemplo se utilizan
las líneas previas a la función setup para definir
variables globales – que van a ser requeridas en
todo el código – luego se usa la sección setup
para definir la función de los pines, cuáles están
en uso y si son de entrada o salida y finalmente
se usa la sección loop para ir prendiendo y
apagando las luces. Estas instrucciones se ejecutan
secuencialmente y vuelven a iniciarse.

¿Cómo se define una variable?

int ledVerde=2;

Esto quiere decir que ledVerde es de tipo


Integer y se le asigna el valor 2. Todas las líneas en
el código Arduino tienen que finalizar con punto
y coma.

36
Arduino para músicos

¿Cómo se define un pin?

pinMode(ledVerde, OUTPUT);

Con pinMode se indica primero el número


de pin y luego si el pin es de entrada o salida. El
número de pin puede indicarse directamente en la
función - pinMode(2,OUTPUT); - pero conviene
tenerlo definido antes, para poder cambiarlo en
un lugar para todo el código posterior.

Los pines son conectores del Arduino


cuyo fin es adosar luces, sensores y dispositivos
externos varios. En un caso sencillo como el
proyecto del semáforo, al pin 2 se conecta un
extremo del led y el otro extremo del led se
conecta al pin GROUND o tierra. El pin entonces
es un pin de salida o OUTPUT dado que Arduino
enviará un voltaje y no estará leyendo nada.

En otro caso como la conexión de un


interruptor, un extrema del mismo puede
ir conectado al pin 2 y el otro a Ground. La
definición en este caso será de INPUT dado que
en lugar de enviar una señal, se recibe y lee una

37
Arduino para músicos

señal.

¿Cómo se insertan comentarios?

Utilizando dos barras iniciales se definen


comentarios en el código, lo cual es ideal para
documentar lo que se hace. Por ejemplo:

// inicialización de los pines

Para comentar muchas líneas se utiliza

/*
Todas las líneas estas
estarán comentadas en el código
*/

¿Cómo se inserta una línea para depurar

código?

La función genérica de depuración ya está


explicada anteriormente, pero el código necesario

38
Arduino para músicos

para obtener en la computadora información


sobre lo que está pasando en Arduino es la
siguiente:

Serial.begin(115200);
Serial.println(“Futbol”);
Serial.println(“Contador:
“+contador);

La primera línea indica que se abre una línea


de comunicación serial a 115200 de velocidad.
La segunda línea enviará desde el Arduino al
Arduino IDE (software instalado en la PC, Mac
o Linux), la leyenda Futbol. La depuración puede
ser utilizada para entender qué sector del código
se está utilizando o bien para imprimir el valor
de las variables o la temperatura de un sensor,
por ejemplo. La tercera línea imprime el valor de
la variable contador-

Condicionales

Los condicionales son sectores del


código que solo se ejecutan cuando se cumple
una condición. En Arduino IDE, el modelo del

39
Arduino para músicos

condicional sigue a continuación. Es importante


notar que la comparación de igualdad se hace con
DOS símbolos de igual, para diferenciarlo de la
asignación. La condición en el ejemplo es: cuando
el estado del Relay sea HIGH, cambiarlo a LOW
y viceversa.

if (relayState==HIGH){
digitalWrite(relay, LOW);
}
else{
digitalWrite(relay, HIGH);
}

Loops

Independientemente de que el código


principal de Arduino se ejecute en Loop una y otra
vez, quizás uno necesita adentro del código que
otro sector se ejecute en loop y esto se hace con
la instrucción while y una condición especificada
entre paréntesis.

while(relayState==HIGH){
// aquí el código

40
Arduino para músicos

a repetir
}

For

En el caso que sea necesario repetir un


segmento de código iterando valores de un
contador, es posible usar el siguiente código

for(int i=1; i<=10; i++){


// aquí el código que
se ejecuta de 1 a 10
}

Funciones

Las funciones son ideales para reusar


partes de código. En Arduino IDE se definen
anteponiendo function y el retorno de la función
se hace con la palabra clave return. En el ejemplo
que sigue a continuación se muestra una función
que reemplaza el símbolo de grado por la palabra
“grados”

41
Arduino para músicos

function removeSpecial($str){
$str=str_replace(“º”,”
grados “,$str);
return $str;
}

Valores al azar

Para darle cierto jugo a los sonidos a


veces es necesario invocar valores al azar que
luego se pueden aplicar por ejemplo a un vibrato.
Primero se llama randomSeed(analogRead(0));
considerando que la entrada del pin 0 no sea
utilizada. El ruido va a causar que distintos
números se usen como semilla para generar el
número al azar. El ejemplo que figura debajo
imprime un número al azar entre 0 y 10.
long randNumber;

void setup() {
Serial.begin(9600);

randomSeed(analogRead(0));
}

void loop() {
randNumber = random(10);
Serial.println(randNumber);

delay(50);

42
Arduino para músicos

El Led Integrado

En las etapas de prototipos de los proyectos


con Arduino es muy común utilizar un led para
comprobar funciones. En lugar de conectar
un breadboard con un led y una resistencia, es
posible utilizar un led interno que tiene la placa
sin necesidad de recurrir a todas las molestias
externas. ¿Cómo se usa el Led interno? Dado
que cada placa tiene dicho Led en otro pin, es
necesario hacer referencia a la constante LED_
BUILTIN.

Para definir
pinMode(LED_BUILTIN, OUTPUT);

Para encender
digitalWrite(LED_BUILTIN, HIGH);

Para apagar
digitalWrite(LED_BUILTIN, LOW);

43
Arduino para músicos

Almacenar datos permanentes con EE-

Prom

No muchos lo saben pero Arduino permite


almacenar datos en una memoria permanente
como si fuera un pequeño disco rígido, sin
necesidad de utilizar un lector de tarjetas SD
externo. Obviamente que su capacidad es muy
limitada, pero para ciertos proyectos es más que
suficiente.

Cada byte de la memoria EEPROM puede


manejar un valor entre 0 y 255.

#include <EEPROM.h>

int addr = 0;

void setup() {

void loop() {

int val = 100;

44
Arduino para músicos

EEPROM.write(addr, val);

// se pasa a la celda siguiente de la


memoria y si llega al tope, vuelve a 0

// para leer EEPROM.read(addr);

addr = addr + 1;
if (addr == EEPROM.length()) {
addr = 0;
}

delay(100);
}

Más sobre programación del Arduino IDE

En lugar de repasar cada función y detalle


como si fuera un clásico manual, en base a la
referencia previa y con los ejemplos de código
de cada proyecto, ya vas a tener las bases para
entender cómo programar Arduino y como
modificar los proyectos a tu gusto.

45
Arduino para músicos

Micro Piano

Crear un micro piano eléctrico desde cero


no es tan complicado como parece. Para las teclas
vamos a usar botones y para emitir las notas un
simple buzzer. De este modo no requerimos el
uso de amplificadores. Arduino determina qué
botón se ha presionado y envía luego al buzzer la
frecuencia respectiva a la nota del botón.

Partes

• Arduino Nano

• Buzzer

46
Arduino para músicos

• 7 Botones

Conexiones
• Botones D1 y GND a D7 y GND

• Buzzer D8

Código

47
Arduino para músicos

// Micro Piano
// Arduino para músicos
// Editorial Steadman Thompson
// Licencia CCBY 4.0 https://
creativecommons.org/licenses/by/4.0

// define la frecuencia de cada nota


#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define REST 0

// define los pines del


buzzer y los botones
int buzzer = D8;
int button1 = D1;
int button2 = D2;
int button3 = D3;
int button4 = D4;
int button5 = D5;
int button6 = D6;
int button7 = D7;

void setup() {

Serial.begin(9600);

48
Arduino para músicos

Serial.println(“Micro
Piano Iniciado”);

// define como PullUp los botones


pinMode(button1,INPUT_PULLUP);
pinMode(button2,INPUT_PULLUP);
pinMode(button3,INPUT_PULLUP);
pinMode(button4,INPUT_PULLUP);
pinMode(button5,INPUT_PULLUP);
pinMode(button6,INPUT_PULLUP);
pinMode(button7,INPUT_PULLUP);

void loop() {

// lee los botones


int button1Value =
digitalRead(button1);
int button2Value =
digitalRead(button2);
int button3Value =
digitalRead(button3);
int button4Value =
digitalRead(button4);
int button5Value =
digitalRead(button5);
int button6Value =
digitalRead(button6);
int button7Value =
digitalRead(button7);

// si se presiona el primer
botón hace sonar el buzzer con
la frecuencia de la nota C
if (button1Value==0){

Serial.println(“C”);
tone(buzzer, NOTE_C1);

49
Arduino para músicos

if (button2Value==0){
Serial.println(“D”);
tone(buzzer, NOTE_D1);

if (button3Value==0){
Serial.println(“E”);
tone(buzzer, NOTE_E1);

if (button4Value==0){
Serial.println(“F”);
tone(buzzer, NOTE_F1);

if (button5Value==0){
Serial.println(“G”);
tone(buzzer, NOTE_G1);

if (button6Value==0){
Serial.println(“A”);
tone(buzzer, NOTE_A1);

if (button6Value==0){
Serial.println(“B”);
tone(buzzer, NOTE_B1);

// espera y detiene el sonido

50
Arduino para músicos

delay(1000);
noTone(buzzer);

Explicación

El código del micropiano es sencillo de


entender. Primero se definen las frecuencias.
Por ejemplo: #define NOTE_C1 33 quiere decir
que cuando el código indique NOTE_C1, será
equivalente a la frecuencia 33Hz. Los sostenidos
están indicados con el sufijo S, ejemplo: NOTE_
FS1 quiere decir F# Luego se indica que el
Buzzer va a estar conectado en el pin digital 12.
El otro extremo del Buzzer va a Ground, lo cual
no necesita indicación desde el código. Luego
se indican los botones que van con un extremo
conectado a D2 y el otro a Ground. Adentro del
loop, se comprueba si hay un botón presionado y
se emite la frecuencia de la nota respectiva. Antes
de reiniciar el loop se suspende el sonido y se
vuelve a comprobar si hay un botón presionado.

51
Arduino para músicos

Nota: si este es tu primer


circuito Arduino quizás no
sepas como conectar todos
los botones dado que la placa
Arduino no tiene tantos pines
Ground. Lo que tenés que hacer
es unir todos los cables que van
a Ground y sacar de ahí un solo
pin hembra que se conecta al
Ground del Arduino.

¿Adónde ir desde acá?

Qué tal modificar el funcionamiento para


que cada botón dispare un acorde arpegiado. Para
lograr esto basta con agregar tres frecuencias
adentro de cada IF y extender la duración de cada
frecuencia.

if (button2Value==0){
Serial.println(“D”);
tone(buzzer, NOTE_D1,500);
delay(300);
tone(buzzer, NOTE_FS1,500);
delay(300);

52
Arduino para músicos

tone(buzzer, NOTE_A1,500);
delay(300);
noTone(buzzer);

53
Arduino para músicos

Version completa

Gracias por evaluar el libro Arduino para


Musicos. Puede adquirir la versión completa en
Amazon por medio de este link

54
Arduino para músicos

55
Arduino para músicos

Índice
Prólogo 1
Qué es arduino 5
Variantes de arduino 7
Requerimientos 11
Proyectos del libro 13
Notas y frecuencias 17
Montaje de los proyectos 22
Hardware del Arduino 28
Buzzers y parlantes 32
Programación del Arduino 35
Micro Piano 46
Caja de música 54
Sintetizador 63
Jukebox 71
Dancing head 80

56
Arduino para músicos

Micro secuencer 86
Power theremin 185
Caja de ritmos 193
Índice 254

57
Arduino para músicos

Arduino para músicos


Rodrigo S. A.

Editorial Steadman Thompson

58

También podría gustarte