from machine import Pin, ADC
from time import sleep
import onewire
import ds18x20
# Instancia de los leds
ledRojo = Pin(16, Pin.OUT)
ledAzul = Pin(17, Pin.OUT)
ledAmarillo = Pin(18, Pin.OUT)
# Instancia del botón
boton = Pin(2, Pin.IN, Pin.PULL_UP)
# Instancia de los sensores
ow = onewire.OneWire(Pin(4))
ds_sensor = ds18x20.DS18X20(ow)
fotorresistencia = ADC(Pin(15))
# Instancia del pin analógico para el potenciómetro
Pot = ADC(Pin(27))
# Contador para manejar la función actual
contador = 0
estado_anterior_boton = 1
# Función para leer el sensor DS18B20
def leer_ds18():
roms = ds_sensor.scan()
if not roms:
print("No se encontró ningún sensor DS18B20")
return
print("Sensor DS18B20 encontrado, leyendo temperatura...")
ds_sensor.convert_temp()
sleep(1)
for rom in roms:
temp = ds_sensor.read_temp(rom)
print('Temperatura DS18B20: {}°C'.format(temp))
ledRojo.on()
sleep(1)
ledRojo.off()
# Función para leer el potenciómetro
def leer_pot():
valor_pot = Pot.read()
print('Valor del Potenciómetro: {}'.format(valor_pot))
ledAzul.on()
sleep(1)
ledAzul.off()
# Función para leer la fotorresistencia
def leer_fotorresistencia():
valor_foto = fotorresistencia.read()
print('Valor de la Fotorresistencia: {}'.format(valor_foto))
ledAmarillo.on()
sleep(1)
ledAmarillo.off()
# Función para manejar el botón
def manejar_boton():
global contador, estado_anterior_boton
estado_boton = boton.value()
if estado_boton == 0 and estado_anterior_boton == 1: # Detectar el flanco de bajada
contador = (contador + 1) % 3
sleep(0.2) # Debounce del botón
estado_anterior_boton = estado_boton
# Bucle principal
while True:
manejar_boton()
if contador == 0:
leer_ds18()
elif contador == 1:
leer_pot()
elif contador == 2:
leer_fotorresistencia()
sleep(0.1) # Retardo para evitar la lectura continua