INICIO

sábado, 13 de junio de 2015

1.07 Generación de sonido



1.07.1. ¿Sonido con microcontroladores?
La generación de sonido consiste en crear el sonido directamente desde el dispositivo, es diferente de la reproducción. Los microcontroladores son capaces de generar sonido siguiendo diferentes técnicas. Aquí vamos a explorar la forma más sencilla de tocar sonido.
1.07.2. Ejemplo de programa: BEEP
Para comenzar a tocar sonido, sólo tienes que conectar un altavoz de papel o un piezo eléctrico entre dos pines de tu microcontrolador. En concreto tendrás que conectar uno de sus pines a tierra (GND, del inglés ground) y el otro a un pin digital. En las transparencias de la actividad, lo hemos conectado al pin digital 8.
El siguiente paso consiste en abrir el ejemplo BLINK y en editarlo para que pueda ser utilizado con el altavoz. Como sabes, BLINK enciende y apaga el pin 13, en este caso quieres usar el pin 8. Por lo tanto, modifica el valor del pin en las diferentes funciones que uses en tu programa: pinMode y digitalWrite.
Descarga el programa en tu placa y oiras que, ahí donde el led parpadeaba antes, ahora oyes un pequeño chasquido una vez cada segundo. Este es el resultado de estimular el altavoz con electricidad. El altavoz está hecho de un electro-imán que mueve un cono de papel. Al moverlo, hace vibrar el aire, efecto claramente audible para las personas.
Si cambias el retardo dentro de la función delay de 1000 a un número más pequeño, toma por ejemplo 1, el sonido se modulará en un tono claramente audible. Si tienes una serie de alumnos haciendo esto simultáneamente, tu aula se transformará en un ejambre de abejas zumbando al mismo tiempo.
En inglés, un zumbido es lo que se conoce como beep, es por esto que a este programa, le llamamos BEEP en lugar de BLINK.
Finalmente, te darás cuenta de que la función delay no permite usar decimales, lo que reduce en mucho la capacidad de experimentar con el sonido. Dentro de Arduino hemos creado otra función, llamada delayMicroseconds, que tiene 1000 veces más resolución temporal. Para que te hagas a la idea, la siguiente ecuación muestra la relación de duración entre las funciones delay y delayMicroseconds:
delay(1) = delayMicroseconds(1000)
Gracias a este cambio de resolución, es posible reproducir los sonidos de los tonos de la escala musical. Si por ejemplo cambias el retardo de 1000 a 1136, estarás tocando el tono La (A4) con tu Arduino.
1.07.3. Tocar tonos, notas y melodías
El uso de los tonos es tan frecuente con Arduino, que hemos creado una librería de código, es decir, un conjunto de funciones, con las que tocar diferentes tonos. Puedes ver un ejemplo, si llamas al programa “Archivo Ejemplos Digital toneMultiple, donde puedes ver como una serie de funciones “tone” lanzan sonidos a través de diferente pines.
Aquí ves dos funciones nuevas:
·         tone(pin, freq) toca una tono en un pin a una frecuencia fija
·         tone(pin, freq, dur) idem, pero por un tiempo determinado
Para ver mejor el efecto de esto, sencillamente cambia el primer parámetro de todas las llamadas a la función “tone” por 8.
1.07.4. Pestañas en el IDE, definición de constantes
El IDE tiene la posibilidad de añadir pestañas (en inglés “tabs”) para ordenar el código. El ejemplo anterior traía una pestaña extra con información sobre frecuencias de tonos.
Para poder usar las definiciones de los tonos, tienes que usar un comando llamado #include. Este comando, seguido por el nombre de la pestaña entre paréntesis (nota que la pestaña tiene un nombre terminado en *.h) se pone al principio de tu programa. Esto hace que todo lo contenido dentro de ese ficher *.h se declare antes de que empiece a ejecutarse el programa.
Si te fijas dentro de la pestaña del ejemplo, llamada “pitches.h”, lo que hay es una serie de llamadas al comando #define. Este comando sirve para declarar constantes. Solemos declarar las constantes con mayúsculas, algo que no es obligatorio, pero se considera un buen uso el lenguaje.
Por otra parte, te darás cuenta de que tanto #include, como #define, son comandos que no tienen punto y coma al final. La razón de esto es que son comandos que no se compilan igual que el resto del programa.
El compilador hace dos pasadas por tu código. En la primera, elimina todos los comentarios y crea un solo archivo temporal muy largo, en el que subsituye todo lo que este marcado con almohadilla (#) por su valor real. En la segunda pasada, hace la compilacion.
1.07.5. Otros métodos para tocar sonido
Existen otras alternativas para tocar sonido. Este no es el momento de profundizar en ellas, por lo que sencillamente las mencionamos:
·         PCM o Pulse Code Modulation, consiste en tocar sonido haciendo que un solo pin oscile a muy alta frecuencia, es lo que se usa en los reproductores de CD.
·         ficheros WAV sobre memorias SD, hay shields que pueden hacer esto.
·         reproductores MP3 como shields de Arduino.
·         activar solenoides que golpeen objetos.
1.07.6. Aplicaciones educativas
Esta actividad es de mucha utilidad a la hora de buscar ejemplos prácticos que sean llamativos para los estudiantes. Además muestra una relación directa entre la manipulación de variables en código y como esto afecta al mundo físico.

No hay comentarios:

Publicar un comentario en la entrada