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.
A continuación vemos un ejemplo completo:
from microbit import *
import log
@run_every(s=30)
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