top of page

GESTOS, MUÉVETE CON MICRO:BIT

  • Joan A. Marí
  • 9 dic 2017
  • 3 Min. de lectura

Lo realmente interesante de tener un acelerómetro en el dispositivo es poder detectar los gestos. Si mueves de una determinada manera el BBC Micro:Bit (con un gesto) entonces MicroPython puede detectarlo.

MicroPython puede detectar los siguientes gestos: “up”(arriba), “down”(abajo), “left” (izquierda), “right” (derecha), “face up” (cara hacia arriba), “face down” (cara hacia abajo), “freefall” (caída libre), “3g”, “6g”, “8g” y “shake” (agitar). Los gestos siempre se representan con strings. Todos los nombres son obvios excepto tres, “3g”, “6g” y “8g” se activan cuando el dispositivo encuentra esos niveles de fuerza g (como cuando un astronauta es enviado al espacio, o cuando un vehículo coge una curva).

Para capturar los gestos instantáneamente utiliza el método “accelerometer.current_gesture”. Como resultado dará uno de los mencionados anteriormente. En el siguiente ejemplo el código hace que sólo se muestre la cara feliz en el caso de que el dispositivo esté cara hacia arriba (c11_gesto_arriba).

from microbit import*

while True:

gesto = accelerometer.current_gesture()

if gesto == "face up":

display.show(Image.HAPPY)

else:

display.show(Image.ANGRY)

Como queremos que el dispositivo reaccione a los cambios en cualquier momento volvemos a utilizar un loop infinito. Dentro del loop, el gesto en tiempo real es leído y almacenado en la variable de nombre gesto. El “if” condicional comprueba si el leído “gesto” es igual a “face up” (cara hacia arriba). Para realizar comprobaciones se utiliza ==, y para la asignación se utiliza una vez solo =. Si el gesto que está leyendo es igual a “face up” entonces se muestra en el display una cara feliz. De otra manera el dispositivo muestra en el display una cara enfadada!

Magic – 8.

Magic – 8 es un juguete que se invento en la década de 1950. La idea es realizar una pregunta que tenga como respuesta si/no, se agita y se espera a que revele la verdad. Es bastante sencillo realizar un programa de estas características (c_12_magic8).

from microbit import*

import random

respuestas = [

"Es cierto",

"Es decididamente así",

"Sin ninguna duda",

"Si, definitivamente",

"Puedes confiar en ello",

"Como lo veo, si",

"Mas probable",

"Buenas perspectivas",

"Si",

"Los signos apuntan a que si",

"Respuesta confusa, prueba otra vez",

"Pregunta otra vez mas tarde",

"Mejor no contesto ahora",

"No puedo predecirlo ahora",

"Concentrate y pregunta otra vez",

"No cuentes con ello"

"Mi respuesta es no",

"Mis fuentes dicen que no",

"La perspectiva no es tan buena",

"Muy dudoso",]

while True:

display.show("8")

if accelerometer.was_gesture("shake"):

display.clear()

sleep(1000)

display.scroll(random.choice(respuestas))

La mayor parte del programa lo llena la lista llamada “respuestas”. El juego está dentro de un loop infinito.

El estado por defecto muestra un 8 en el display. Sin embargo, el programa necesita detectar si el dispositivo se ha agitado. El método “was_gesture” utiliza su argumento (en este caso el string “shake” ya que lo que necesitamos es saber si se ha agitado) para devolver una respuesta de True/False. Si el dispositivo se ha agitado entramos en el condicional “if”, el bloque de código limpia el display, espera un segundo (así parece que el dispositivo está pensando tu pregunta) y muestra una respuesta aleatoria de la lista.

¿Por qué no preguntarle si es este es el programa más grande jamás escrito? ¿Cómo podríamos hacer trampa y hacer que la respuesta siempre sea positiva o negativa? (Truco: utilizando los botones).

En los siguientes enlaces se pueden descargar los archivos en micropython de los ejemplos:

https://drive.google.com/open?id=11HQ10pXoG5ipWzfndgIktW7jbR7h1F1s

https://drive.google.com/open?id=1z7_wcHUdQ3xjUa_dhdwoQb3eUWmI4vll

Fuente: https://microbit-micropython.readthedocs.io/en/latest/tutorials/gestures.html

 
 
 

Comments


© 2016 by Joan A. Marí

  • LinkedIn Social Icon
  • FRAUDE
bottom of page