Reproducir Audio Con Arduino 2019

in #spanish6 years ago

Hola a todos. Hoy aprenderemos Nuevas Habilidades

Vamos a programar una melodía musical en arduino utilizando un simple altavoz, uno de los códigos más básicos para programar sonidos en arduino es como se muestra a continuación.

intpinaltavoz = 13; // pin altavoz
int frecuencia = 220; // frecuencia a sonar

voidsetup()
{
}

voidloop()
{
tone(pinaltavoz,frecuencia); // inicia del altavoz
delay(2000);
noTone(pinaltavoz); // detenemos el sonido
delay(1000);
}

En este código podemos notar que el comando “tone” está acompañado de los argumentos “pinaltavoz” y “frecuencia” ya que la estructura de este comando se debe establecer de esa manera, cuando hacemos el llamado al “notone” solo especificamos el pin donde está conectado el altavoz porque lo que se quiere es simplemente detener el altavoz.

Esta misma estructura la utilizamos en el código a continuación, pero con la diferencia que estaremos programando un conjunto de frecuencia que representan todas las notas musicales la cual usaremos para especificar el sonido requerido.

Antes echemos una mirada a la imagen donde especificamos la conexión

audio arduino.png
Imagen de mi auditoria, realizada en fritzing

Algo que deben tomar en cuenta es utilizar un condensador igual o mayor a 47 microf ya que utilizar un condensador de menor capacidad puede originar el corte de alguna frecuencia, sin embargo lo puede conectar tal cual como se ve en la imagen.

CODIGO

/VARIABLES/

intatv=13; // altavoz pin 13

Nota: cada nota musical está representada de la manera siguiente, cs[5] lo importante que debe saber es que el 5 indica las 5 frecuencias encerradas en el corchete

int c[5]={131,262,523,1046,2093}; // frecuencias 4 octavas de Do
intcs[5]={139,277,554,1108,2217}; // Do#
int d[5]={147,294,587,1175,2349}; // Re
intds[5]={156,311,622,1244,2489}; // Re#
int e[5]={165,330,659,1319,2637}; // Mi
int f[5]={175,349,698,1397,2794}; // Fa
intfs[5]={185,370,740,1480,2960}; // Fa#
int g[5]={196,392,784,1568,3136}; // Sol
intgs[5]={208,415,831,1661,3322}; // Sol#
int a[5]={220,440,880,1760,3520}; // La
int as[5]={233,466,932,1866,3729}; // La#
int b[5]={247,494,988,1976,3951}; // Si

void setup()
{ }
void loop()
{

Nota: en este código está representada la frecuencia y la duración “b[2]” indica que sonara la segunda frecuencia de la nota Si y que su duración es de 500 milisegundos

/* HARRY POTTER */

nota(b[2], 500);
nota(e[3],1000);
nota(g[3], 250);
nota(fs[3],250);
nota(e[3],1000);
nota(b[3],500);
nota(a[3],1250);
nota(fs[3],1000);
nota(b[2], 500);
nota(e[3],1000);
nota(g[3],250);
nota(fs[3],250);
nota(d[3],1000);
nota(e[3],500 );
nota(b[2],1000 );
noTone(atv); //detenemos el altavoz
delay(1000);
nota(b[2], 500);
nota(e[3],1000);
nota(g[3], 250);
nota(fs[3],250);
nota(e[3],1000);
nota(b[3],500);
nota(d[4],1000);
nota(cs[4],500);
nota(c[4],1000);
nota(a[3],500);
nota(c[4],1000);
nota(b[3],250);
nota(as[3],250);
nota(b[2],1000);
nota(g[3],500);
nota(e[3],1000);
noTone(atv);
delay(2000);
}
void nota(intfrec, int t)

Nota:en esta parte del código la palabra “nota” es la representación de la estructura utilizada en el código anterior “nota(e[3],1000);” lo estamos haciendo de esta manera para evitar colocar un delay en cada nota musical, la variable “intfrec” e “int t” es la representación de la frecuencia y duración de cada nota musical “nota(e[3],1000);”

{
tone(atv,frec); // suena la nota en frec
delay(t); // tiempo de retardo
}

Espero le puedan sacar mucho provecho a este contenido, BAY

Sort:  

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by michelylopez from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.