from machine import Pin
import onewire
import ds18x20
import time
pin_datos = Pin(23)
sensor_ds = ds18x20.DS18X20(onewire.OneWire(pin_datos))
# Escanear el bus para obtener las direcciones de los sensores conectados
roms = sensor_ds.scan()
print("Sensores DS18B20 encontrados:", roms)
# Configuración del semáforo de LEDs
led_verde = Pin(15, Pin.OUT)
led_naranja = Pin(2, Pin.OUT)
led_rojo = Pin(4, Pin.OUT)
# Estado inicial
led_verde.value(0)
led_naranja.value(0)
led_rojo.value(0)
while True:
if not roms:
print("Buscando sensor DS18B20...")
roms = sensor_ds.scan()
time.sleep(1)
continue
# 1. Solicitar la conversión de temperatura a todos los sensores en el bus
sensor_ds.convert_temp()
time.sleep_ms(750) # Tiempo requerido para la conversión a 12 bits
# 2. Leer la temperatura del primer sensor encontrado (roms[0])
for rom in roms:
temperatura = sensor_ds.read_temp(rom)
print(f"Temperatura DS18B20: {round(temperatura, 2)} °C")
# Control del semáforo de temperatura
if temperatura < 20:
led_verde.value(0)
led_naranja.value(0)
led_rojo.value(0)
elif 20 <= temperatura <= 30:
led_verde.value(1)
led_naranja.value(0)
led_rojo.value(0)
elif 31 <= temperatura <= 36:
led_verde.value(0)
led_naranja.value(1)
led_rojo.value(0)
else: # temperatura > 36
led_verde.value(0)
led_naranja.value(0)
led_rojo.value(1)
time.sleep(1)