martes, 3 de noviembre de 2015

Arduino Shield. Programa 4

Vamos a ver a continuación como generar sonidos con nuestro Shield. En él tenemos conectado un pequeño altavoz al pin 11. Es un altavoz de tipo Piezoeléctrico con una respuesta en frecuencia pequeña, pero suficiente para emitir sonidos de frecuencias comprendidas entre 1 y 5 kHz.

Para generar un sonido debemos tener en cuenta que por el pin correspondiente al altavoz hay que enviar un nivel alto, mantenerlo durante un tiempo, y después enviar un nivel bajo, manteniendolo también durante un tiempo. La inversa de la suma de ambos tiempos es la frecuencia del tono que escucharemos.

Afortunadamente el entorno de Arduino incluye una función que nos simplifica mucho la generación de sonidos. Dicha función es "tone ( )". Y al ejecutarla debemos pasarle como parámetros el pin por el que queremos generar el tono, la frecuencia de dicho tono y la duración que deseemos en milisegundos.

tone(pin, frequency, duration) 

Vamos a ver un ejemplo de como generar un tono de 1 kHz por nuestro pin 11, con una duración de 1 segundo:

// Programa 4
// Generar tono de 1 kHz por el altavoz con 1 segundo de duración

#define pin_altavoz 11              // con esta línea indicamos que pin_altavoz es 11

void setup()
{
pinMode(pin_altavoz,OUTPUT);
tone(pin_altavoz,

}

void loop ()
{

}

Como se puede comprobar, la función que genera el tono la hemos situado dentro de "setup ( )". Con ello conseguimos que solo se ejecute una vez al conectar el Arduino. Si quisiéramos que estuviera todo el tiempo generando el tono la situariamos en la función "loop ( )".

Prueba ahora a escribir un programa que genere continuamente un tono de 1 kHz y 1 segundo de duración, a continuación otro tono de 4 kHz y 1 segundo de duración y una pausa de 2 segundos. Recuerda que como queremos que se ejecute contínuamente debes colocar las llamadas a la función "tone ( )", y el retardo dentro de la función "loop ( )" y así consigues que esté todo el tiempo generando los tonos.