Saltar al contenido

Construye un TECLADO MUSICAL con ARDUINO

Si bien es posible conectar simplemente una serie de interruptores momentáneos a entradas digitales a teclas de diferentes tonos, en este proyecto, estará construyendo algo llamado escalera de resistencia. Esta es una forma de leer varios interruptores utilizando la entrada analógica. Es una técnica útil si te faltan entradas digitales. Conectará una cantidad de interruptores que están conectados en paralelo a analógico en 0. La mayoría de estos se conectarán a la alimentación a través de una resistencia. Cuando presiona cada botón, un nivel de voltaje diferente pasará al pin de entrada. Si presiona dos botones al mismo tiempo, obtendrá una entrada única basada en la relación entre las dos resistencias en paralelo.

CONSTRUYE EL CIRCUITO

  1. Conecte su placa de pruebas con energía y tierra como en los proyectos anteriores. Conecte un extremo del piezo a tierra. Conecte el otro extremo al pin 8 en su Arduino.
  2. Coloque los interruptores en la placa de pruebas como se muestra en el circuito. La disposición de resistencias e interruptores que se alimentan a una entrada analógica se denomina escalera de resistencias. Conecte el primero directamente a la alimentación. Conecte los interruptores segundo, tercero y cuarto a la alimentación a través de una resistencia de 220 ohmios, 10 kilohmios y 1 megaohmio, respectivamente. Conecte todas las salidas de los interruptores en una sola unión. Conecte esta unión a tierra con una resistencia de 10 kilohmios y también conéctela a Analog In 0. Cada uno de estos actúa como un divisor de voltaje.
Una escalera de resistencia y cinco interruptores como entrada analógica. Figura 1

Piensa en un recinto para el teclado. Mientras que los viejos sintetizadores analógicos tenían cables que se asomaban por todas partes, su teclado es elegante y digital. Prepare un pequeño trozo de cartón que se pueda cortar para acomodar sus butons. Rotula las teclas para que sepas qué notas son activadas por cada tecla.

La disposición de resistencias e interruptores que se alimentan a una entrada analógica se denomina escalera de resistencias. Figura 2

En este programa, deberá mantener una lista de frecuencias que desea reproducir cuando presione cada uno de sus botones. Puede comenzar con las frecuencias medias para C, D, E y F (262Hz, 294Hz, 330Hz y 349Hz). Para hacer esto, necesitará un nuevo tipo de variable llamada matriz. Una matriz es una forma de almacenar diferentes valores relacionados entre sí, como las frecuencias en una escala musical, utilizando solo un nombre. Son una herramienta conveniente para que acceda de manera rápida y eficiente a la información. Para declarar una matriz, comience como lo haría con una variable, pero siga el nombre con un par de corchetes: después del signo igual, colocará sus elementos entre corchetes. Para leer o cambiar los elementos de la matriz, debe hacer referencia al elemento individual utilizando el nombre de la matriz y luego el índice del elemento que desea abordar. El índice se refiere al orden en que aparecen los elementos cuando se crea la matriz. El primer elemento de la matriz es el elemento 0, el segundo es el elemento 1, y así sucesivamente.

  • Crea un conjunto de frecuencias. Configure una matriz de cuatro notas utilizando las frecuencias enumeradas anteriormente. Convierta esta matriz en una variable global declarándola antes de la configuración ().
  • Comience la comunicación en serie. En su configuración (), comience la comunicación en serie con la computadora.
  • Lea el valor analógico y envíelo al monitor en serie. En el bucle (), declare una variable local para mantener el valor leído en el pin A0. Como cada interruptor tiene un valor de resistencia diferente que lo conecta a la alimentación, cada uno tendrá un valor diferente asociado. Para ver los valores, agregue la línea Serie. println (keyVal) para enviar a la computadora.
  • Use una instrucción if () … else para determinar qué nota tocar. Usando una instrucción if () … else, puede asignar cada valor a un tono diferente. Los valores incluidos en el programa de ejemplo son cifras aproximadas para estos tamaños de resistencia. Como todas las resistencias tienen cierta tolerancia al error, es posible que estas no funcionen exactamente para usted. Use la información del monitor en serie para ajustar según sea necesario.
  • Toque las notas que corresponden al valor analógico. Después de cada instrucción if (), llame a la función tone (). El programa hace referencia a la matriz para determinar qué frecuencia jugar. Si el valor de A0 coincide con una de sus declaraciones if, puede decirle al Arduino que toque un tono. Es posible que su circuito sea un poco “ruidoso” y que los valores fluctúen un poco mientras presiona un interruptor. Para adaptarse a esta variación, es una buena idea tener un pequeño rango de valores para comparar. Si usa la comparación “&&”, puede verificar varias declaraciones para ver si son verdaderas. Si presiona el primer botón, se reproducirán las notas [0]. Si presiona el segundo, se reproducirán las notas [1], y si presiona el tercero, se reproducirán las notas [2]. Esto es cuando las matrices se vuelven realmente útiles.
  • Deje de tocar el tono cuando no presione nada. Solo se puede reproducir una frecuencia en un pin en un momento dado, por lo que si presiona varias teclas, solo escuchará un sonido. Para detener la reproducción de notas cuando no se presiona un botón, llame a la función noTone (), que proporciona el número de pin para dejar de reproducir el sonido.

Úsalo

Si sus resistencias tienen un valor cercano a los valores en el programa de ejemplo, debería escuchar algunos sonidos del piezo cuando presiona los botones. De lo contrario, verifique el monitor en serie para asegurarse de que cada uno de los botones esté en un rango que corresponda a las notas en la instrucción if () … else. Si escuchas un sonido que parece tartamudear, intenta aumentar un poco el rango.

Presione varios botones al mismo tiempo y vea qué tipo de valores obtiene en el monitor en serie. Use estos nuevos valores para activar aún más sonidos. Experimente con diferentes frecuencias para expandir su salida musical. Puede encontrar frecuencias de notas musicales en esta página: arduino.cc/frequencies.

Si reemplaza los interruptores y la escalera de resistencia con sensores analógicos, ¿puede usar la información adicional que le brindan para crear un instrumento más dinámico? Puede usar el valor para cambiar la duración de una nota o, como en el Proyecto Theremin, crear una escala móvil de sonidos.