MOVIMIENTO, COMO CONTROLAR LOS GIROS DEL MICRO:BIT
- Joan A. Marí
- 25 nov 2017
- 2 Min. de lectura
BBC Micro:Bit incorpora un acelerómetro. Mide el movimiento a lo largo de los tres ejes.
El eje X; controla el movimiento de derecha a izquierda.
El eje Y; controla el movimiento de adelante a atrás.
El eje Z; controla el movimiento de arriba abajo.
Existe un método para cada eje que devuelve un valor positivo o negativo en función de la medida del movimiento. Cuando la lectura es 0 es que nos encontramos a “nivel” en el eje de la lectura.
Por ejemplo, a continuación vamos a ver un sencillo código donde utilizaremos “get_x” para medir el nivel con el dispositivo a lo largo del eje X (c10_eje_x).
from microbit import*
while True:
lectura = accelerometer.get_x()
if lectura > 20:
display.show("D")
elif lectura < -20:
display.show("I")
else:
display.show("-")
Si el dispositivo se encuentra completamente horizontal, en el display se muestra “-“, sin embargo si lo rotamos a la derecha o a la izquierda aparecerá D o I respectivamente.
Como queremos que el dispositivo siempre indique una cosa o otra, lo integramos dentro de un loop infinito. Lo primero que sucede cuando entramos en el cuerpo del loop es la medida del acelerómetro en el eje x en este caso y lo almacenamos en una variable llamada “lectura”. Debido a la sensibilidad del acelerómetro es conveniente trabajar con pasos de 20 en 20. Por eso en las condiciones utilizamos “>20” y “<-20”. En este caso como son dos rangos infinitos utilizamos el “else” para mostrar el nivel, que se encontrara entre estos dos valores.
Como es obvio también existe el método “get_y” y “get_z” para el eje Y y el eje Z respectivamente.
Si sientes curiosidad por como un Smartphone sabe cuando mostrar las imágenes en una posición o en otra en la pantalla es porque incorpora un acelerómetro y lo utiliza del mismo modo que el ejemplo anterior. Los mandos para los videojuegos también utiliza un acelerómetro para mejorar el manejo y los movimientos.
Alboroto musical
Uno de los aspectos más maravillosos de MicroPython en el BBC Micro:Bit es la sencillez para vincular diferentes capacidades en el dispositivo. Por ejemplo, vamos a convertirlo en un instrumento musical.
Conecta un altavoz tal y como hicimos en el capítulo de música (pin 0 y pin GND al positivo y al negativo respectivamente, aunque no necesariamente deben de ir conectados en esa posición, también se puede conectar el positivo al pin GND).

¿Qué sucede si cogemos las lecturas del acelerómetro y las utilizamos como tonos? Vamos a probar
from microbit import *
import music
while True:
music.pitch(accelerometer.get_y(), 10)
La línea de código clave es la última y es verdaderamente sencilla. Anidamos la lectura del eje Y como la frecuencia que le pasamos la método “music.pitch”. Solo dejamos que suene durante 10 milisegundos cada tono ya que queremos un cambio rápido cuando movamos el dispositivo. Como lo hemos puesto dentro de un loop infinito el dispositivo reacciona a cualquier cambio en el eje Y con un cambio de tono.
¡Eso es!
Mueve el dispositivo hacia adelante y hacia atrás. Si la lectura a lo largo del eje Y es positiva cambia la frecuencia del tono que hace sonar Micro:Bit.
Imagina una orquesta entera de dispositivos. ¿Eres capaz de tocar una melodía? ¿Cómo puedes mejorar el programa para que Micro:Bit suene más musical?
En el siguiente enlace se puede descargar el archivo en micropython del último ejemplo.
https://drive.google.com/open?id=1830Ae-h49bfIxDVp-Pj9MbSOJ0h98tZH
Fuente: https://microbit-micropython.readthedocs.io/en/latest/tutorials/movement.html
Comments