Skip to content

Instantly share code, notes, and snippets.

@Burgie80
Last active November 5, 2024 23:09
Show Gist options
  • Save Burgie80/fdb7bc6fc1623f6ad4cbfba093b4a1ee to your computer and use it in GitHub Desktop.
Save Burgie80/fdb7bc6fc1623f6ad4cbfba093b4a1ee to your computer and use it in GitHub Desktop.
Lector de temperatura con microbit y Prolog

Práctica: Sensor de temperatura de Microbit y Prolog

Código Python

from microbit import *
import utime

while True:
    temp = temperature()
    uart.write(str(temp) + "\n")
    sleep(1000)  # Espera 1 segundo antes de la siguiente lectura

Código Prolog

:- use_module(library(ansi_term)).
:- use_module(library(readutil)).

% Define las reglas lógicas
accion_based_on_temp(Temp) :-
    Temp < 20,
    writeln('Temperatura baja: Encender la luz.').
accion_based_on_temp(Temp) :-
    Temp >= 20,
    Temp < 30,
    writeln('Temperatura optima: Mantener todo como esta.').
accion_based_on_temp(Temp) :-
    Temp >= 30,
    writeln('Temperatura alta: Encender el ventilador.').

% Función para leer del puerto serial
leer_serial(Puerto) :-
    setup_call_cleanup(
        open(Puerto, read, Stream, [type(text)]),
        leer_datos(Stream),
        close(Stream)
    ).

leer_datos(Stream) :-
    read_line_to_string(Stream, Line),
    (   Line \= end_of_file,
        catch(number_string(Temp, Line),
              _,
              (writeln('Error al convertir la lectura a numero.'), Temp = 0)),
        format('Temperatura leida: ~w°C~n', [Temp]),
        accion_based_on_temp(Temp),
        leer_datos(Stream)
    ;
        writeln('Fin de la lectura serial.')
    ).

% Punto de entrada
:- initialization(main).

main :-
    % Reemplaza 'COM3' con el puerto correcto
    Puerto = 'COM3',
    writeln('Iniciando monitor de temperatura...'),
    leer_serial(Puerto).

Loom

Grabación de Loom

Capturas de pantalla

Captura de pantalla (1) Captura de pantalla (3)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment