Skip to main content

Metrónomo digital

Usaremos variables para convertir micro:bit en un metrónomo digital. Mediante los botones A y B cambiaremos el tempo del metrónomo, mientras que agitando la tarjeta encenderemos y apagaremos el sonido del metrónomo.

En primer necesitamos una variable que almacene el tempo, y a la que vamos a llamar, obviamente, tempo. Otra variable se llamará marcha, y  almacenará los valores verdadero, si el metrónomo está en marcha o falso, si está parado. Marcha será por lo tanto una variable de tipo booleano.

La variable findepulso almacenará el momento exacto medido en milisegundos en el que debe acabar cada pulso.

Para crear las variables hay que acceder al menú Variables y pulsar sobre Crear una variable... El aspecto que presentará el menú desplegable una vez creadas las variables es el siguiente:

Variables08.png

Seguidamente daremos unos valores iniciales a las variables: 120 para el tempo y falso para marcha. Este último valor indica que el metrónomo estará parado cuando sea encendido o reiniciado.

Variables01.png

Recordemos que el bloque con la constante falso se obtiene del menú Lógica.

El metrónomo se pondrá en marcha o se parará cada vez que se agite. Usaremos un evento si agitado del menú Entrada y cambiaremos el valor de marcha. Gracias al operador no, del menú Lógica, si el valor de marcha es falso, cambiará a verdadero, y si es verdadero, cambiará a falso.

Variables02.png

Cuando se pulse el botón A el tempo disminuirá un pulso y cuando se pulse el botón B el tempo aumentará un pulso.

Variables03.png

Al pulsar A+B micro:bit mostrará en pantalla el tempo.Variables06.png

El bloque para siempre será el encargado de hacer sonar un pitido con cada pulso y de mostrar brevemente el icono de una corchea en la pantalla LED.

Variables07.png

En primer lugar, el bucle si marcha entonces se asegura de que el metrónomo sólo funcione si la variable marcha tiene el valor verdadero. En caso contrario el bucle no hará nada.

Si el metrónomo está en marcha, la variable findepulso tomará el valor en milisegundos en el que debe acabar la ejecución del pulso actual. Este valor es la suma del tiempo actual, milisegundos (ms), y de la duración de un pulso en milisegundos, es decir, 60000 ms/min dividido entre el tempo en pulsos/min. La variable milisegundos (ms) se encuentra en el menú Avanzado/Control.

Seguidamente se hace sonar una nota breve, se muestra una corchea en pantalla, se espera un instante y se borra la pantalla.

Como todavía quedará tiempo para que finalice el pulso actual, se introduce un bucle de espera cuyo funcionamiento es el siguiente: mientras el tiempo actual en ms sea menor que el tiempo en el que debe finalizar el pulso, no se hará nada. Por el contrario, cuando el tiempo actual en ms sea igual o mayor al tiempo de findepulso, el pulso habrá acabado, el bucle mientras finalizará y se iniciará una nueva ejecución del bucle para siempre (un nuevo pulso).