import machine
import utime
from machine import ADC, Pin
from pico_i2c_lcd import I2cLcd
# Configuración de los pines
POTENTIOMETER_PIN = 27 # Pin de entrada para el potenciómetro de ajuste de temperatura
TEMP_SENSOR_PIN = 26 # Pin de entrada para el sensor de temperatura LM35
LED_PIN = 15 # Pin para el LED
RELAY_PIN = 16 # Pin para el relé
# Configuración del bus I2C y el LCD serial
i2c = machine.I2C(0, scl=machine.Pin(1), sda=machine.Pin(0), freq=400000) # Configura el bus I2C
lcd = I2cLcd(i2c, 0x27, 4, 20) # Crea un objeto para controlar el LCD (reemplaza 0x27 por la dirección I2C correcta)
lcd.backlight_on() # Enciende la retroiluminación del LCD
# Configuración del ADC para el potenciómetro y el sensor de temperatura
potentiometer_adc = ADC(Pin(POTENTIOMETER_PIN))
temp_sensor_adc = ADC(Pin(TEMP_SENSOR_PIN))
# Configuración de conversión para el ADC
conv_potentiometer = 3300 / 65535 # Conversión para el potenciómetro
conv_temp_sensor = 3300 / 65535 # Conversión para el sensor de temperatura
conv_temp = 100 / 3300 # Conversión de voltaje a temperatura
# Configuración de los pines de salida
led = Pin(LED_PIN, Pin.OUT)
relay = Pin(RELAY_PIN, Pin.OUT)
led.value(0)
relay.value(0)
while True:
# Lectura del potenciómetro de ajuste de temperatura y cálculo de la temperatura establecida
pot_value = potentiometer_adc.read_u16()
set_temperature = pot_value * conv_potentiometer * conv_temp
# Lectura del sensor de temperatura TMP36 y cálculo de la temperatura ambiente
temp_value = temp_sensor_adc.read_u16()
mV = temp_value * conv_temp_sensor
room_temperature = (mV - 500.0) / 10.0
# Mostrar las temperaturas en el LCD serial
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("Set Temp: {:.1f}C".format(set_temperature))
lcd.move_to(0, 1)
lcd.putstr("Room Temp: {:.1f}C".format(room_temperature))
# Control del relé y el LED
if room_temperature < set_temperature:
relay.value(1)
led.value(1)
else:
relay.value(0)
led.value(0)
utime.sleep(1)