P3: Zumbador - myTeachingURJC/Arq-computadores-01 GitHub Wiki

Sesión 3: Generar tonos con un zumbador.

1. Funcionamiento y conexión.

El zumbador, es un dispositivo que convierte las señales eléctricas en sonido. En su interior contiene un material que se deforma con el paso de la corriente. Si se hace vibrar en un rango de frecuencias determinado, producirá sonido.

modulo-zumbador-buzzer-arduino

El zumbador viene con un pequeño circuito electrónico compuesto por un transistor y una resistencia que facilita la conexión a la RPi. Para que funcione solo tenemos que conectar GND a cualquier pin GND de la placa, VCC al pin de 3.3V, y I/O al pin de salida que queramos, por ejemplo GP0.

Para hacer vibrar el zumbador, generaremos un pulso cuadrado a una frecuencia alta, que hará vibrar la membrana interior. Para ello, la salida a la que hemos conectado el zumbador tendremos que encenderla durante unos milisegundos, y apagarla durante el mismo tiempo en bucle.

onda_cuadrada

Esto hará que la membrana se estire y contraiga rápidamente generando un tono. La frecuencia a la que vibra determinará la "nota" que suena.

2. Ejercicios Propuestos

Ejercicio 1: Generar un tono:

Escribe un programa que genere un tono audible al encender la placa.

Ejercicio 2: Varios tonos:

Escribe un programa que, en función del pin activo en la entrada (GP8 o GP9), genere un tono con una frecuencia distinta. Si no hay activa ninguna entrada, no debe generar ningún tono.

Ejercicio 3 (Avanzado): Piano simple:

Asignaremos a cada entrada de la GP8 a la GP15 un tono en base a una escala mayor. Es decir, el GP8 generará la nota "DO", el GP9 la nota "RE", y así sucesivamente.

Para ello, necesitas conocer la relación de frecuencias entre todas las notas, que es la siguiente:

  • Si para la nota "DO" hemos utilizado un periodo de 10000, para "RE", dividiremos entre 1.1224, es decir 10000/1.1224 = 8909.
  • Para obtener "MI", dividiremos el perido anterior entre 1.1224, es decir, 8909 / 1.1224 = 7937
  • El resto de notas se obtienen de forma similar, dividiendo el periodo de la anterior por un factor concreto.

La siguiente tabla muestra un ejemplo empezando con un periodo de 10000

Entrada Nota Intervalo Operación Periodo Resultante
GP8 DO Inicio Base 10000
GP9 RE Tono 10000 / 1.12246 8909
GP10 MI Tono 8909 / 1.12246 7937
GP11 FA Semitono 7937 / 1.05946 7492
GP12 SOL Tono 7492 / 1.12246 6674
GP13 LA Tono 6674 / 1.12246 5946
GP14 SI Tono 5946 / 1.12246 5297
GP15 DO' Semitono 5297 / 1.05946 5000

Autores

Licencia

Enlaces