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_everypuede 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 completo:
from microbit import *
import log
@run_every(s=30)5)
def log_data():
log.add({
'temperatura': temperature(),
'sonido': microphone.sound_level(),
'luz': display.read_light_level()
})
while True:
sleep(100000)
Los datos se recuperan de la misma forma que se ha descrito para MakeCode.
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:

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