Skip to main content

Registro de datos

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA

Para utilizar el Registro de datos con micro:bit V2 tenemos disponibles en Python:

  • import log. Importamos el módulo, como siempre al principio del código, para tener disponibles las funciones de registro de datos.
  • log.set_labels(). Para configurar los encabezados de las columnas del registro de datos. Por ejemplo: log.set_labels('temperatura', 'sonido', 'luz').
  • log.add(). Añadir entradas al registro de datos. Por ejemplo:
log.add({
      'temperatura': temperature(),
      'sonido': microphone.sound_level(),
      'luz': display.read_light_level()
    })
  • run_every(). Programar entradas de registro en el intervalo especificado de tiempo. Puedes utilizar un programador para registrar datos automáticamente a intervalos regulares. run_every puede utilizarse de dos formas:

    • Como Decorador - se coloca encima de la función a programar. Por ejemplo:
@run_every(days=1, h=1, min=20, s=30, ms=50)
def mi_funcion():
    # Hacer lo que sea
  • Como una función - pasando la llamada de retorno como argumento posicional. Por ejemplo:
def mi_funcion():
    # Hacer lo que sea
run_every(mi_funcion, s=30)

Cada argumento corresponde a una unidad de tiempo diferente y son aditivos. Así, run_every(min=1, s=30) programa la llamada de retorno cada minuto y medio.

Cuando se lanza una excepción dentro de la función callback se desprograma la función. Para evitar esto puedes atrapar excepciones con try/except.

Los parámetros son:

  • callback – Function to call at the provided interval.
  • days – Establece la marca de días para la programación.
  • h – Establece la marca de horas para la programación.
  • min – Establece la marca de minutos para la programación.
  • s – Establece la marca de segundos para la programación.
  • ms – Establece la marca de milisegundos para la programación.

Ejemplo registro simple

A continuación vemos un ejemplo de registro:

from microbit import *
import log

@run_every(s=5)
def log_data():
    log.add({
        'temperatura': temperature(),
        'sonido': microphone.sound_level(),
        'luz': display.read_light_level()
    })

Ejemplo

Vamos a realizar una actividad en la que registraremos la temperatura y la luz ambiente en la misma micro:bit que contiene el programa

l programa que vemos a continuación realiza un registro automático cada 10 segundos o cuando pulsemos el botón A. Pulsando A+B se borran los datos registrados en la microbit.

from microbit import *
import log

# Configurar etiquetas y establecer la unidad de tiempo
log.set_labels("temperatura", "nivel_luz", timestamp=log.SECONDS)
display.show(Image.NO)
sleep(1000)
# Enviar cada fila de datos a la salida serie
log.set_mirroring(True)

continue_registro = True

# Decorador programado para que se ejecute cada 10s durante 50ms
@run_every(s=10, ms=50)
def reg_dato():
    # Registra cada 10s temperatura y nivel de luz y muestra un icono
    global continue_registro
    if continue_registro:
        display.show(Image.YES)
        try:
            log.add(temperatura=temperature(), nivel_luz=display.read_light_level())
        except OSError:
            continue_registro = False
            display.show(Image.CHESSBOARD)
        sleep(500)

while True:
    if button_a.is_pressed() and button_b.is_pressed():
        display.show(Image.GHOST)
        # Borra el archivo de registro con la opcion "full" lo
        # que asegura el borrado de datos aunque tarde mas tiempo.
        log.delete(full=True)
        continue_registro = True
    elif button_a.is_pressed():
        display.show(Image.YES)
        sleep(500)
        log.add(temperatura=temperature(), nivel_luz=display.read_light_level())
        display.show(Image.HEART)
    else:
        display.show(Image.NO)
    sleep(500)

A continuación vemos el registro de datos tras unos segundos y un par de entradas manuales:

A19_reg_local_literal.png

Autor Federico Coca Fuente : Guía de Trabajo de Microbit Licencia CC-BY-SA

Página extraída de Federico Coca Guia de Trabajo de Microbit CC-BY-SA