import time
from machine import ADC, Pin
compresor = Pin(0, Pin.OUT)
switch1 = Pin(2, Pin.IN)
ventilador = Pin(1, Pin.OUT)
switch2 = Pin(3, Pin.IN)
bomba = Pin(17, Pin.OUT)
switch_flujo = Pin(20, Pin.IN)
alarma = Pin(6, Pin.OUT)
parogen_g = Pin(4, Pin.IN)
parogen_r = Pin(5, Pin.IN)
parobc_b = Pin(18, Pin.IN)
parobc_y = Pin(19, Pin.IN)
sensort = ADC(Pin(21))
# PULSADOR GENERAL
estado = 0
valor_viejo = 0
def puls(valortemp, valor2, valor3, valor5, valor6):
global estado, valor_viejo
valor = parogen_g.value() # Lee el estado del botón
if valor == 1 and valor_viejo == 0:
estado = 1 - estado
valor5 = estado
valor_viejo = valor # Guarda el estado antiguo
# PULSADOR DE MARCHA/PARO DE LA BOMBA
estadobc = 0
valor_viejobc = 0
def bombaind(valor4, valor7, valor8):
global estadobc, valor_viejobc
valorbc = parobc_b.value() # Lee el estado del botón
if valorbc == 1 and valor_viejobc == 0:
estadobc = 1 - estadobc
bomba.value(estadobc)
valor_viejobc = valorbc # Guarda el estado antiguo
bomba.value(estadobc)
# LECTURA DEL POTENCIÓMETRO
def lectura_analogica(lectura_raw):
valortemp = 0.000381 * lectura_raw + 5
valortemp = round(valortemp, 1)
return valortemp
# PULSADOR GENERAL DE MARCHA Y PARO (COMPRESOR Y VENTILADOR)
def parogeneral(valortemp, valor2, valor3, valor4, valor5, valor6, valor7, valor8, valor9, valor10):
puls(valortemp, valor2, valor3, valor5, valor6)
# Temperatura mayor de 10 grados
if valor5 == 1 and valor6 == 0:
if valor2 == 0 and valor3 == 0:
ventilador.value(0)
compresor.value(0)
elif valor5 == 1 and valor6 == 0:
if valor2 == 1 and valor3 == 0:
if valortemp > 10:
compresor.value(0)
ventilador.value(0)
elif valor5 == 1 and valor6 == 0 :
if valor2 == 0 and valor3 == 1:
if valortemp > 10:
ventilador.value(1)
compresor.value(0)
alarma.value(1)
time.sleep(0.2)
alarma.value(0)
elif valor5 == 1 and valor6 == 0 :
if valor2 == 1 and valor3 == 1:
if valortemp > 10:
ventilador.value(1)
time.sleep(3)
compresor.value(1)
# Temperatura menor de 10 grados
if valor5 == 1 and valor6 == 0:
if valor2 == 1 and valor3 == 1:
if valortemp < 10:
ventilador.value(1)
compresor.value(0)
alarma.value(1)
time.sleep(0.2)
alarma.value(0)
elif valor5 == 1 and valor6 == 0 :
if valor2 == 0 and valor3 == 0:
if valortemp < 10:
ventilador.value(0)
compresor.value(0)
elif valor5 == 1 and valor6 == 0 :
if valor2 == 1 and valor3 == 0:
if valortemp < 10:
ventilador.value(0)
compresor.value(0)
elif valor5 == 1 and valor6 == 0:
if valor2 == 0 and valor3 == 1:
if valortemp < 10:
ventilador.value(1)
compresor.value(0)
alarma.value(1)
time.sleep(0.2)
alarma.value(0)
# BOMBA
def bombabc(valor4, valor7, valor8):
bombaind(valor4, valor7, valor8)
if valor4 == 1 and valor7 == 1:
bomba.value(1)
while True:
valor2 = switch1.value() # switch del compresor
valor3 = switch2.value() # switch del ventilador
valor4 = switch_flujo.value() # switch del flujo
valor5 = estado # MARCHA/PARO GENERAL
valor6 = parogen_r.value() # MARCHA/PARO GENERAL
valor7 = parobc_b.value() # marcha/paro bomba
valor8 = parobc_y.value() # marcha/paro bomba
valortemp = lectura_analogica(sensort.read_u16())
print(valortemp)
# Actualizaciones de estados y acciones
parogeneral(valortemp, valor2, valor3, valor4, valor5, valor6, valor7, valor8, valor9, valor10)
bombabc(valor4, valor7, valor8)
if valor10 == 0:
ventilador.value(0)
compresor.value(0)
bomba.value(0)
time.sleep(0.1)
if valor6 == 1:
estado = 0
ventilador.value(0)
compresor.value(0)
if valor8 == 1:
estadobc = 0
bomba.value(0)
time.sleep(0.1)
if valor4 == 0:
bomba.value(0)
time.sleep(0.1)