from machine import Pin as pin, ADC
from time import sleep
# sleep(0.1)
#Digital Outputs
fan = pin(19, pin.OUT)
comp = pin(20, pin.OUT)
pump = pin(21, pin.OUT)
buzzer = pin(28, pin.OUT)
pwr_led = pin(25, pin.OUT)
rgbled = pin(6, pin.OUT)
#Digital Inputs
fan_sw = pin(2, pin.IN, pin.PULL_DOWN)
com_sw = pin(3, pin.IN, pin.PULL_DOWN)
flow_sw = pin(4, pin.IN, pin.PULL_DOWN)
on_button = pin(10, pin.IN, pin.PULL_UP)
off_button = pin(11, pin.IN, pin.PULL_UP)
pump_on = pin(12, pin.IN, pin.PULL_UP)
pump_off = pin(13, pin.IN, pin.PULL_UP)
#Analog Inputs
temp_pot = ADC(pin(26))
#Variables
counter = 0
psswrd_counter = 0
var_conteo = 0
gen_drive = 0
pump_drive = 0
#Functions
def shutdown(pin): #Funny kinda useless pin.value() replacement
pin.value(0)
def alarm_fan(pin, rgb): #Sets the alarm sound
pin.value(1)
sleep(1)
pin.value(0)
sleep(1)
def alarm_comp(pin, rgb): #Sets the alarm sound
pin.value(1)
sleep(1)
pin.value(0)
sleep(1)
def map(x, in_min, in_max, out_min, out_max): #Maps the analog readings into a integer range of our wishing
return int((x-in_min) * (out_max-out_min) / (in_max - in_min) + out_min)
def temp_value(adc): #Gets readings from potentiometer and sets the range to [5;30]
analog_value = adc.read_u16()
temp_read = map(analog_value, 0, 65535, 5, 30)
sleep(0.3)
return temp_read
def comp_failure(pin1,pin2, rgb): #Shuts down compressor, sets alarm
shutdown(pin1)
alarm_comp(pin2, rgb)
def fan_failure(pin1, pin2, pin3, rgb): #Shuts down both fan and compressor, sets alarm
shutdown(pin1)
shutdown(pin2)
alarm_fan(pin3, rgb)
while True:
temp = temp_value(temp_pot)
print(temp)
if (on_button.value() == 0 and off_button.value() == 1):
pwr_led.value(1)
fan.value(1)
gen_drive = 1
if ((on_button.value() == 1 and off_button.value() == 0) and gen_drive == 1):
fan.value(0)
comp.value(0)
pwr_led.value(0)
counter = 0
var_conteo = 0
gen_drive = 0
if (counter < 3 and fan.value() == 1 and com_sw.value() == 1):
counter += 1
sleep(1)
if counter == 3:
comp.value(1)
var_conteo = 1
if temp >= 10 and var_conteo == 1 and com_sw.value() == 1:
comp.value(1)
if (fan_sw.value() == 1 and gen_drive == 1):
fan.value(1)
if(flow_sw.value() == 1):
if (pump_on.value() == 0 and pump_off.value() == 1 and pump_drive == 0):
pump.value(1)
pump_drive = 1
if (pump_on.value() == 1 and pump_off.value() == 0 and pump_drive == 1):
pump.value(0)
pump_drive = 0
if(flow_sw.value() == 0):
pump.value(0)
#Temperature Compressor System
if temp < 10:
comp.value(0)
#Compressor Failure
if (com_sw.value() == 0 and temp >= 10 and gen_drive == 1):
while (com_sw.value() == 0 and temp >= 10 and gen_drive == 1) == True:
comp_failure(comp, buzzer, rgbled)
#Fan Failure
if (fan_sw.value() == 0 and gen_drive == 1):
while (fan_sw.value() == 0 and gen_drive == 1) == True:
fan_failure(fan, comp, buzzer, rgbled)