El árbol de la micro:bit

Le enseñas tres movimientos y ella sola dibuja las preguntas que los distinguen.

Sin conectar.

Lo que mide ahora (cada segundo)

Variación–mg
Fuerza máxima–mg

1 · Enséñale: pulsa y haz ese movimiento 10 segundos

2 · Cada punto es un segundo de movimiento

3 · El árbol que ha aprendido

4 · Pruébalo: muévete

—
¿Qué mide la micro:bit y cómo elige el árbol?

La micro:bit tiene un acelerómetro: un chip que nota cuánto empuja el movimiento. Cada segundo calcula la fuerza de aceleración muchas veces y se queda con dos cosas: la fuerza máxima y la variación (máxima menos mínima).

Quieta marca unos 1000 mg: es la gravedad, que siempre tira de ella. Al andar, el pie da golpes y la variación sube. Al correr, los golpes son más fuertes.

El árbol prueba todas las preguntas del tipo «¿la variación es menor o igual que…?» y «¿la fuerza máxima es menor o igual que…?». Se queda con la que deja los grupos más separados y repite dentro de cada grupo. Dos preguntas como máximo, para que se pueda leer.

La micro:bit, por muy bien que mida, no es un instrumento de laboratorio: no dos micro:bit marcan igual y no es lo mismo llevarla en el bolsillo que en el tobillo. Por eso el árbol hay que entrenarlo siempre con la micro:bit puesta donde la vas a llevar.

El programa de la micro:bit (MakeCode)

Proyecto nuevo, añade la extensión Bluetooth y en Ajustes del proyecto activa «Sin emparejamiento». Cambia a JavaScript y pega:

let maximo = 0
let minimo = 0
let fuerza = 0
bluetooth.startUartService()
input.setAccelerometerRange(AcceleratorRange.EightG)
bluetooth.onBluetoothConnected(function () {
    basic.showIcon(IconNames.Yes)
})
bluetooth.onBluetoothDisconnected(function () {
    basic.showIcon(IconNames.No)
})
basic.forever(function () {
    maximo = 0
    minimo = 99999
    for (let i = 0; i < 50; i++) {
        fuerza = input.acceleration(Dimension.Strength)
        maximo = Math.max(maximo, fuerza)
        minimo = Math.min(minimo, fuerza)
        basic.pause(20)
    }
    bluetooth.uartWriteLine("" + maximo + "," + minimo)
})