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