from machine import ADC, Pin, I2C
from pico_i2c_lcd import I2cLcd
import utime
import tm1637
# Inicialización de entradas y salidas
AnalogIn = ADC(0) # gp26 Entrada del sensor TMP36
SetPoint = ADC(1) # gp27 Entrada voltaje de ajuste del setpoint de temperatura
tmverde = tm1637.TM1637(clk=Pin(1), dio=Pin(0))
tmrojo = tm1637.TM1637(clk=Pin(2), dio=Pin(3))
tmverde.brightness(2)
tmrojo.brightness(2)
i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
I2C_ADDR = 0x27
Conv = 3300 / 65535
Conv1 = 150 / 3300 # Conv1=100/3300
LED = Pin(15, Pin.OUT)
Relay = Pin(16, Pin.OUT)
LED.value(0)
Relay.value(0)
RelayNvo = Pin(28, Pin.OUT)
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
while True:
ValorPot = ADC.read_u16(SetPoint)
TempSP = Conv * ValorPot
SetTemp = 0 + TempSP * Conv1
tmverde.number(int(SetTemp))
V = AnalogIn.read_u16()
mV = V * Conv
RoomTemp = (mV - 500.0) / 10.0 # Para LM35, Para TMP36, T=(Vo-500)/10
tmrojo.number(int(RoomTemp))
# Imprimir en el LCD
lcd.clear()
lcd.move_to(0, 0)
lcd.putstr("T_ext: {:.1f}\xDFC".format(SetTemp))
lcd.move_to(0, 1)
lcd.putstr("T_ofic: {:.1f}\xDFC".format(RoomTemp))
if RoomTemp > SetTemp:
Relay.value(1)
LED.value(1)
RelayNvo.value(1)
else:
Relay.value(0)
LED.value(0)
RelayNvo.value(0)
utime.sleep(1)