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.
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.
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
