CONTACTO

Encuentra información referente a la programación, diseño gráfico, electrónica y mucho más, la página está pensada para compartir contenido educativo relevante coadyuvando a su aprendizaje diario.


Generar tonos con Arduino para hacer música

Generar tonos musicales con Arduino para tocar la música o melodía de una canción y reproducirlo en un buzzer o algún altoparlante es relativamente sencillo pero muy laborioso, porque se debe tomar algunos aspectos importantes como la frecuencia de la nota musical del instrumento que deseamos simular y los tiempos, esto hace que nos lleve mucho tiempo generar secuencias de tonos musicales que tengan una coherencia aceptable para ser audible, pero de ninguna manera es imposible hacerlo, para empezar a entender cómo generar tonos musicales con la ayuda de Arduino es importante conocer algunos aspectos importantes que se detallan a continuación.  

Nota musical en cifrado americano o anglosajona

Al intentar reproducir un tono musical con Arduino lo primero que se nos viene a la mente es que nota musical utilizar, cuanto tiempo sonara esa nota musical, etc., y para esto podemos buscar en internet alguna partitura de la canción que deseemos reproducir con la ayuda de Arduino.

Comúnmente conocemos las notas musicales DO, RE, MI, FA, SOL, LA, SI, pero si buscan en Internet podrán encontrar algunas partituras que usan cifrado americano donde las notas musicales son C, D, E, F, G, A, B, en un ejemplo que viene preinstalado en el IDE de Arduino usa este cifrado americano, pueden acceder en el IDE de Arduino desde el menú Archivo–> Ejemplos –> 02.Digital –> toneMelody y estudiarla para entender un poco más.

Rango de frecuencias de tonos para reproducir música de algunos instrumentos musicales en Arduino

Como ya dijimos para generar un tono musical en Arduino primero debemos saber que existe una gran cantidad de frecuencias que generan los instrumentos musicales, estos rangos son muy útiles conocerlos para poder utilizar el instrumento musical correcto, a continuación se muestra una tabla con algunos rangos de frecuencias que utilizan algunos instrumentos musicales.

Generar tonos con Arduino para hacer música creatividad codificada

Frecuencias usadas para generar tonos musicales del piano con Arduino

Generar una melodía musical con Arduino es muy simple pero muy laborioso, como ya dijimos debemos escoger el instrumento musical que deseamos utilizar y saber sus frecuencias de cada nota musical, en este caso se detalla a continuación una tabla con las notas musicales y sus respectivas frecuencias del piano.

Generar tonos con Arduino para hacer música creatividad codificada
Frecuencias de tonos del piano para Arduino

Debemos tomar en cuenta que el espectro audible por el ser humano es de 20 a 20000 Hz por lo cual tenemos que ser consiente que no podemos pasar este rango, para que sea escuchado por los seres humanos, en caso contrario si queremos trabajar con frecuencias superiores (ultrasónicas) o frecuencias inferiores (infrasónicas) debemos trabajar con su rango respectivo.

¿Cómo reproduce sonidos Arduino?

Como sabemos el sonido no es más que vibraciones que viajan por un medio, estas generan el sonido, pero como hace Arduino para transformar señales eléctricas a señales sonoras, lo logra con la ayuda de transductores como los buzzer o altavoces, estas transforman una energía a otra en este caso a energía acústica, pero estos transductores requieren recibir una determinada cantidad de energía eléctrica por un determinado tiempo produciendo una vibración en el transductor, esto Arduino lo hace mediante señales PWM señalando la frecuencia de la nota musical, como sabemos gracias a esto podemos crear resultados análogos con señales digitales.

Función tone() de Arduino

Para generar tonos y reproducir música con Arduino mediante un buzzer o algún altavoz, Arduino en su documentación nos presenta una función llamada Tone() que nos ayuda a generar una frecuencia para luego ser transmitida al transductor y generar el sonido que queramos.

Esta función es muy simple presenta una sobrecarga, por lo cual podemos trabajar con dos o tres parámetros, el primer parámetro nos permite indicar el pin que vamos a usar para generar el tono musical con Arduino, el segundo parámetro es usada para indicar la frecuencia del tono que deseamos reproducir y el tercer parámetro lo usamos para determinar la duración del tono, debemos indicarlo en milisegundos, además este parámetro es opcional.

tone(pin ,frecuencia)
tone(pin ,frecuencia, tiempo)

En la documentación de Arduino nos indica que esta función solo permite usar frecuencias de 31 a 65535 Hz, además como ya se mencionó en un artículo sobre Timers para usar esta función Arduino utiliza el Timer2, lo que ocasiona que no funcionen las salidas PWM 3 y 11 a excepción de las placas de desarrollo Arduino Mega.

Función noTone() de Arduino

Esta función tiene un parámetro donde debemos indicar el pin que es usado para generar los tonos, es usada para detener la onda cuadrada generada por la función tone().

noTone(pin);

Ejemplo de Tonos con Arduino para reproducir música con buzzer o altavoces

Desarrollaremos dos ejemplos, el primero nos permitirá generar el tono de una sirena de de policía con Arduino, y el segundo ejemplo generaremos varias canciones para ser reproducidas en un buzzer o algún altavoz desarrollaremos varias músicas con Arduino (música de DRAGON BALL, MARIO BROS, STAR WARS,TETRIS Y NOKIA)

Ejemplo 1 – SIRENA DE POLICÍA CON ARDUINO

Este ejemplo genera el sonido de una sirena de policía con la ayuda de Arduino, esto se logro aumentando y disminuyendo la frecuencia.

Materiales

  • Arduino UNO o equivalente
  • Resistor de 10k
  • Led
  • Buzzer o altavoz
  • pulsador
  • protoboard
  • cables lo necesario

Circuito propuesto para reproducir los tonos musicales con Arduino

El altavoz puede ser sustituido por un buzzer

Generar tonos con Arduino para hacer música creatividad codificada

Código fuente para generar una sirena de policía con Arduino

/*  AUTOR: CREATIVIDAD CODIFICADA
 *  www.creatividadcodificada.com
 *  NOMBRE DEL PROYECTO: Sirena de policía y ambulancia con Arduino
 *  con tonos de Arduino
 *  
*/

int btn = 2;
int tiempo = 10;
int sonido = 9;

void setup() {

  pinMode(btn, INPUT); // Pulsador para accionar la alarma
  pinMode(sonido, OUTPUT); // Pin para reproducir la frecuencia del tono

}

void loop() {

  if(digitalRead(btn)==HIGH)
  {
    sirenaPolicia(1200,800,1,400,2);
    sirenaPolicia(1100,700,20,20,10);
    sirena2();
    noTone(sonido);
    }
  
}

// función para cambiar la frecuencia del tono de forma secuencial
// sirenaPolicia(frecuencia máxima, frecuencia mínima, divisor, bucle, # de repeticiones) 
void sirenaPolicia(int fMAX, int fMIN, int divisor, int numMAX, int repet)
{
  int fMIN1 = fMIN;
  int fMAX1 = fMAX;
  for(int i =0; i<repet; i++)
  {
    for(int j = 0; j<=numMAX; j++)
    {
      tone(sonido, fMIN1);
      delay(tiempo);
      fMIN1 = fMIN1 + divisor;
      }
    for(int k = numMAX/2; k>=0; k--)
    {
      tone(sonido, fMAX1);
      delay(tiempo);
      fMAX1 = fMAX1 - divisor*2;
      }
    fMIN1 = fMIN;
    fMAX1 = fMAX;  
    }
  } 

//Función para generar un simple cambio de frecuencia 
void sirena2()
{
  for(int l = 0; l<=4; l++)
  {
    tone(sonido, 1200);
    delay(500);
    tone(sonido, 800);
    delay(500);
    }
  }

Ejemplo 2 РGenerar m̼sica con tonos en Arduino, para ser reproducidos con un Buzzer o altavoz ( m̼sica de DRAGON BALL, PACMAN, MARIO BOROS, STAR WARS, TETRIS Y NOKIA)

El presente ejemplo consiste en generar canciones o música de Dragon Ball, Pacman, Mario Bros, Star Wars, Tetris y el típico tono de Nokia, mediante un pulsador.

Materiales

  • Arduino UNO o equivalente
  • Resistor de 10k
  • Led
  • Buzzer o altavoz
  • pulsador
  • protoboard
  • cables lo necesario

Circuito propuesto

Es el mismo del anterior ejemplo

Generar tonos con Arduino para hacer música creatividad codificada

Código fuente para reproducir las canciones o tonos de Dragon Ball, PacMan, Mario Bros, Star Wars, Tetris y el típico tono de Nokia con Arduino

Como el código tiene bastantes lineas de código se subió a gitHub, accede a nuestro repositorio de creatividad codificada mediante este <<LINK >>

Si te ayudo este artículo compártelo para que llegue a mas personas, gracias de antemano

Comentarios

Su dirección de email no sera publicado. Los campos obligatorios están marcados con *.