# Codigo desarrollado por Juan Felipe Lombana Hernández
# Celular: +57 3232533804/ Bogota/Colombia
#------------------------------ [MODULOS]------------------------------------
from machine import Pin
import onewire
import ds18x20
import time
import binascii # Modulo para convertir ascii en binario
#--------------------------- [LEDS]---------------------------------------
led_azul=Pin(15,Pin.OUT)
led_verde=Pin(5,Pin.OUT)
led_rojo=Pin(19,Pin.OUT)
#--------------------------- [SENSOR]---------------------------------------
ow=onewire.OneWire(Pin(4)) # Crea un objeto onewire en el pin 4
ds_sensor = ds18x20.DS18X20(ow) # Creamos un objeto de la clase DS18X20
roms = ds_sensor.scan() # Escanee DS18B20 en el bus para obtener una lista de dispositivos
print('Dispositivos DS encontrados: ', roms) # Imprimimos los dispositivos encontrados
#--------------------------- [LECTURA DEL SENSOR]---------------------------------------
while True:
ds_sensor.convert_temp() # Se debe llamar a convert_temp() antes de cada adquisición o los datos no se actulizan
time.sleep_ms(750) # Espera al menos 750 ms despues de convert_temp
for rom in roms: # Devuelve el valor de temperatura y número de serie de los dispositivos ds18b20 en el bus
idHex=binascii.hexlify(bytearray(rom)) # Convierte los datos ascii a binario del número del sensor
print("ID: ", idHex) # Imprime el número de serie del sensor
temperatura = ds_sensor.read_temp(rom) # Lee la temperatura del sensor
print("La temperatura es: ", temperatura) # Imprime la temperatura
time.sleep(1)
if temperatura >=16 and temperatura <=50: # Condicional para el led verde
led_azul.value(0)
led_verde.value(1)
led_rojo.value(0)
time.sleep(1)
if temperatura >=51: # Condicional para el led rojo
led_azul.value(0)
led_verde.value(0)
led_rojo.value(1)
time.sleep(1)
if temperatura <=15: # Condicional para el led azul
led_azul.value(1)
led_verde.value(0)
led_rojo.value(0)
time.sleep(1)