Como se dijo en la práctica anterior, un material piezoléctrico es aquel que aplicándole una diferencia de potencial eléctrico genera tensiones en su interior que a su vez generan deformaciones. Además se sabe que, con la ayuda de un Piezo Buzzer, se pueden generar sonidos.
Ahora bien ¿qué pasa si se puede controlar la diferencia de potencial eléctrico de tal manera de crear un sonido agradable y con ritmo al oído? Pues es completamente posible. Es por ello que en esta práctica se aplicarán los conceptos vistos en la práctica 21, pero con una variación del código que permitirá crear una escala musical con la ayuda de un Piezo Buzzer, una tarjeta Arduino y otros materiales que más adelante se señalarán.
22.1 Objetivos
Realizar un programa para generar una escala musical con una tarjeta Arduino y un Piezo Buzzer.
22.2 Materiales y Métodos
- Un cable USB impresora.
- Un computador.
- Cables para el montaje del circuito.
- Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.
- Un piezo buzzer.
22.3 Montaje de la práctica
Antes de comenzar el montaje del circuito, se proyecta su montaje en el programa Fritzing. Este montaje es bastante simple; solo se debe conectar las terminales de los cables del piezo buzzer (pieza circular) con la tarjeta arduino. El terminal negro en la entrada “GND” y el termianl rojo en la entrada “-9”. Clic aquí para el enlace a TinkerCad.
22.4 Codificación de la práctica
Cada nota musical tiene una frecuencia que hace que el Piezo Buzzer vibre y genere el tono correspoendinte a esa nota musical. En el siguiente cuadro se podrán ver los códigos (frecuencia) de la escala musical.
22.4.1 Codificación con lazo For
//
int pizoElectro=9;
long pulso;
int i;
long DO=523.25,
RE=587.33,
MI=659.26,
FA=698.46,
SOL=783.99,
LA=880,
SI=987.77;
long escalera[]={DO,RE,MI,FA,SOL,LA,SI};
void setup()
{
pinMode(pizoElectro, OUTPUT);
}
void loop()
{ pulso=500;
//subo
for (i=0; i<=6; i++) {
tone(pizoElectro, escalera[i]);
delay(pulso);
noTone(pizoElectro);
}
//bajo
tone(pizoElectro, escalera[0]);
delay(pulso);
for (i=6; i>=0; i--) {
tone(pizoElectro, escalera[i]);
delay(pulso);
noTone(pizoElectro);
}
}
}
22.4.2 Codificación sin lazo For (paso a paso)
//
int pizoElectro=9;
long pulso;
long DO=523.25,
RE=587.33,
MI=659.26,
FA=698.46,
SOL=783.99,
LA=880,
SI=987.77;
void setup()
{
pinMode(pizoElectro, OUTPUT);
}
void loop()
{
long escalera[]={DO,RE,MI,FA,SOL,LA,SI};
pulso=750;
// subo
tone(pizoElectro, DO);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, RE);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, MI);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, FA);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, SOL);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, LA);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, SI);
delay(pulso);
noTone(pizoElectro);
//bajo
tone(pizoElectro, DO);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, SI);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, LA);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, SOL);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, FA);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, MI);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, RE);
delay(pulso);
noTone(pizoElectro);
tone(pizoElectro, DO);
delay(pulso);
noTone(pizoElectro);
}
}
22.5 Conclusión
A través de esta práctica se logró hacer que con un Piezo Buzzer y una tarjeta Arduino se generaran frecuencias distintas de sonido para crear un tono de una serie de notas musicales ordenadas. Además, se vio que era posible realizarla mediante dos códigos distintos usando el comando For y tone() visto en la práctica 21 y con la ayuda de un modelo del montaje de la tarjeta arduino en TinkerCad.