8 - Sensores integrados: El Acelerómetro (Sensor de Movimiento)
8-Sensores integrados: el acelerómetro "sensor de movimiento"
Como se mencionó en clases anteriores, la tarjeta Micro:bit cuenta con diversos tipos de sensores incorporados, en esta sección aprenderemos acerca del acelerómetro, conocido también como Sensor de movimiento:
El Acelerómetro (El Sensor de Movimiento)
Un acelerómetro es un sensor de movimiento que mide el movimiento. El acelerómetro de tu tarjeta micro:bit detecta cuando lo inclinas de izquierda a derecha, hacia atrás y hacia adelante y hacia arriba y hacia abajo, por lo que podemos deducir que también detecta cuando lo agitas. en la siguiente imagen podemos observar todos los principales movimientos que soporta el acelerómetro de la tarjeta microbit.
Como se puede apreciar podemos detectar muchos movimientos, tales como: agitado, logotipo hacia arriba, logotipo hacia abajo, pantalla hacia arriba, pantalla hacia abajo, inclinación hacia la izquierda, inclinación hacia la derecha, caída libre, entre otros.
Cuando escuchamos hablar sobre el sensor acelerómetro que se encuentra dentro de tu Micro:bit. Su nombre puede sonar complicado, pero su trabajo es muy simple y entre sus principales tareas se encuentra: detecta la inclinación y la sacudida de la placa.
Sacudida: Cuando agitas la Micro:bit, el acelerómetro lo siente y le dice al programa que algo está pasando. Es como un sensor de movimiento para tu robot.
Inclinación: El acelerómetro también sabe si la Micro:bit está inclinada hacia arriba, hacia abajo, o hacia los lados. Esto es muy útil para crear juegos donde la dirección es importante, como un laberinto o un juego de carreras.
- Fuerza G: Un acelerómetro también puede medir la fuerza G, que es la fuerza que te presiona contra el asiento cuando un auto acelera o frena muy rápido.
Cómo funciona el acelerómetro del micro:bit
- Detección de movimiento: Este sensor detecta cualquier movimiento del micro:bit, incluyendo inclinaciones, giros, sacudidas y caída libre.
- Medición de aceleración: Mide la fuerza de la aceleración aplicada a la placa en tres ejes (X, Y, Z), lo que permite determinar la posición y movimiento.
- Rangos de lectura: Los valores del acelerómetro van desde un mínimo de -1023 hasta un máximo de 1023, que representan diferentes magnitudes de aceleración.
Cómo usarlo en tus proyectos
- Usa el bloque "aceleración (mg)" en MakeCode: Este bloque se encuentra en la categoría de entrada (color fucsia) y te permite seleccionar el eje o la fuerza (aceleración) que deseas medir.
- Crea aplicaciones interactivas: Puedes usar el acelerómetro para crear juegos, un contador de pasos, un medidor de nivel de burbuja, alarmas de caída o cualquier proyecto que responda al movimiento.
- Programa el movimiento: Al hacer clic en el bloque "aceleración", puedes elegir leer la aceleración en el eje X, Y o Z, o la aceleración general en miligravedades (mg).
Para comenzar con el uso del acelerómetro vamos a entenderlo mediante el siguiente ejercicio en el cual se creará un dado digital que cambie el numero de puntos cada vez que cambie.
NOTA: ANTES DE COMENZAR RECUERDA CONFIGURAR MAKECODE PARA RECIBIR CÓDIGO PYTHON.
¡Crea un Dado Digital!
Un ejemplo perfecto de cómo usar el acelerómetro es creando un dado digital. Cuando agitas la Micro:bit, ella se "tirará" y te mostrará un número al azar, tal como lo haría un dado de verdad.
Paso 1: ¡Importamos todas las librerías de micro:bit!
Para importar todas las librerías disponibles para programar la tarjeta micro:bit, inicia digitando la siguiente línea de código:
from microbit import *
Paso 2: ¡El Bloque o Evento de Sacudida on_gesture_shake():!
Necesitas que el programa se active cuando la Micro:bit se agite. En MicroPython, usamos una función denominada on_gesture_shake():, que permite ejecutar el código dentro de la función cada vez que se agite el micro:bit, lo creamos con el fin de verificar este evento (Si micro:bit se agita). para poderlo utilizar digite la siguientes líneas de cóodigo:
from microbit import *
def on_gesture_shake():
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 3: ¡Creando variable número!
Crear una variable y asignarle el nombre número, en esta variable se almacenará el valor del número aleatorio que se genera al agitar la micro:bit, esta línea de código se debe escribir dentro de la función: on_gesture_shake():, esto se logra mediante la siguiente línea de código:
from microbit import *
numero = 0
def on_gesture_shake():
numero = 0
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 4: ¡Generando número aleatorio!
Crear una número aleatorio, mediante la funcion randint(número inicial, número final), la cual genera un número aleatorio entre un número inicial y otro final, en este ejercicio se asignara un número aleatorio entre 1 y 6 el código para generar el numero con la función randint sería el siguiente: randint(1, 6), luego para asignar el numero aleatorio a la variable número se realiza mediante la siguiente línea de código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 5: ¡Comprobando valor de la variable número, cuando es igual a 1!
Hasta este punto ya tenemos un número aleatorio generado de 1 a 6 y almacenado en la variable número, ahora piensa, ¿Qué valor numérico contiene la variable número?. La variable número puede valer, 1 o 2 o 3 o 4 o 5 o 6. Para saber que valor tomo vamos a evaluarla lógicamente mediante la sentencia de decisión IF. que en español quiere decir SI.
Preguntemos si la variable número, vale 1, de ser cierta la respuesta, pediremos que nos muestre muestre el dado con los puntos del número 1 en la pantalla de la micro:bit. esto se logra con la siguiente linea de código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 6: ¡Comprobando valor de la variable número, cuando es igual a 2!
Ya preguntamos si la variable número, vale 1, pero recordemos que puede tomar cualquier valor del 1 al 6, por tal razón debemos preguntar por el siguiente número que sería el número 2, mediante la opción elif, que es la combinación de la expresión else-if que indica ¡en caso contrario evalué sí! y evaluamos número = 2, esto se hace con agregando las siguiente código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
elif numero == 2:
basic.show_leds("""
. . . . .
. # . . .
. . . . .
. . . # .
. . . . .
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 7: ¡Comprobando valor de la variable número, cuando es igual a 3!
Ya preguntamos si la variable número, vale 1 y 2, pero recordemos que puede tomar cualquier valor del 1 al 6, por tal razón debemos preguntar por el siguiente número que sería el número 3, mediante la opción elif, que explicamos anteriormente, evaluamos si numero = 3, esto se hace con agregando las siguiente código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
elif numero == 2:
basic.show_leds("""
. . . . .
. # . . .
. . . . .
. . . # .
. . . . .
""")
elif numero == 3:
basic.show_leds("""
# . . . .
. . . . .
. . # . .
. . . . .
. . . . #
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 8: ¡Comprobando valor de la variable número, cuando es igual a 4!
Ya preguntamos si la variable número, vale 1,2 y 3, pero recordemos que puede tomar cualquier valor del 1 al 6, por tal razón debemos preguntar por el siguiente número que sería el número 4, mediante la opción elif, que explicamos anteriormente, evaluamos si numero = 4, esto se hace con agregando las siguiente código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
elif numero == 2:
basic.show_leds("""
. . . . .
. # . . .
. . . . .
. . . # .
. . . . .
""")
elif numero == 3:
basic.show_leds("""
# . . . .
. . . . .
. . # . .
. . . . .
. . . . #
""")
elif numero == 4:
basic.show_leds("""
. . . . .
. # . # .
. . . . .
. # . # .
. . . . .
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 9: ¡Comprobando valor de la variable número, cuando es igual a 5!
Ya preguntamos si la variable número, vale 1,2,3 y 4, pero recordemos que puede tomar cualquier valor del 1 al 6, por tal razón debemos preguntar por el siguiente número que sería el número 5, mediante la opción elif, que explicamos anteriormente, evaluamos si numero = 5, esto se hace con agregando las siguiente código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
elif numero == 2:
basic.show_leds("""
. . . . .
. # . . .
. . . . .
. . . # .
. . . . .
""")
elif numero == 3:
basic.show_leds("""
# . . . .
. . . . .
. . # . .
. . . . .
. . . . #
""")
elif numero == 4:
basic.show_leds("""
. . . . .
. # . # .
. . . . .
. # . # .
. . . . .
""")
elif numero == 5:
basic.show_leds("""
# . . . #
. . . . .
. . # . .
. . . . .
# . . . #
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Paso 10: ¡Comprobando valor de la variable número, cuando es igual a 6!
Ya preguntamos si la variable número, vale 1,2,3,4 y 5, pero recordemos que puede tomar cualquier valor del 1 al 6, por tal razón debemos preguntar por el siguiente número que sería el número 6, mediante la opción elif, que explicamos anteriormente, evaluamos si numero = 6, esto se hace con agregando las siguiente código:
from microbit import *
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
elif numero == 2:
basic.show_leds("""
. . . . .
. # . . .
. . . . .
. . . # .
. . . . .
""")
elif numero == 3:
basic.show_leds("""
# . . . .
. . . . .
. . # . .
. . . . .
. . . . #
""")
elif numero == 4:
basic.show_leds("""
. . . . .
. # . # .
. . . . .
. # . # .
. . . . .
""")
elif numero == 5:
basic.show_leds("""
# . . . #
. . . . .
. . # . .
. . . . .
# . . . #
""")
elif numero == 6:
basic.show_leds("""
# . . . #
. . . . .
# . . . #
. . . . .
# . . . #
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
Con esto hemos terminado un dado que muestra su cara al agitar la micro:bit
Paso 3: ¡Creando variable número!
Crear una variable y asignarle el nombre número, en esta variable se almacenará el valor del número aleatorio que se genera al agitar la micro:bit, esto se logra mediante la siguiente línea de código:
from microbit import *
numero = 0
def on_gesture_shake():
numero = 0
numero = randint(1, 6)
if numero == 1:
basic.show_leds("""
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
""")
elif numero == 2:
basic.show_leds("""
. . . . .
. # . . .
. . . . .
. . . # .
. . . . .
""")
elif numero == 3:
basic.show_leds("""
# . . . .
. . . . .
. . # . .
. . . . .
. . . . #
""")
elif numero == 4:
basic.show_leds("""
. . . . .
. # . # .
. . . . .
. # . # .
. . . . .
""")
elif numero == 5:
basic.show_leds("""
# . . . #
. . . . .
. . # . .
. . . . .
# . . . #
""")
elif numero == 6:
basic.show_leds("""
# . . . #
. . . . .
# . . . #
. . . . .
# . . . #
""")
else:
basic.show_leds("""
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
""")
input.on_gesture(Gesture.SHAKE, on_gesture_shake)
El código del ejercicio anterior quedaría de la siguiente forma:
Comprueba los resultados del ejercicio:
Para comprobar si el dado se esta ejecutando de forma correcta da clic sobre el botón SHAKE de la microbit:
Desafio adicional (El dado virtual de 9 lados)
Completa el siguiente desafío para afianzar tu aprendizaje.
Crear tres caras más al dado, es decir que muestre los números aleatoriamente de 1 a 9 con sus respectivas caras.
.
Comentarios
Publicar un comentario