from picozero import pico_led import time from machine import Pin from picozero import pico_led PUMP_ON = 0 if PUMP_ON == 0: print("PUMPS ARE CURRENTLY DISABLED") class Pump(): def __init__(self, forward_pin): self.forward_pin = forward_pin self.bidirectional = False self.pump = Pin(forward_pin, Pin.OUT) self.pump.value(0) self.pump_on = False self.time_last_on = 0 self.total_time_on = 0 def on(self, duration=None): self.pump.value(PUMP_ON) pico_led.on() self.pump_on = True # TODO log message self.time_last_on = time.time() if duration: time.sleep(duration) self.off() def off(self): if self.pump_on: time_on = time.time() - self.time_last_on self.total_time_on += time_on self.pump.value(0) pico_led.off() self.pump_on = False # calculate how long the pump was on # TODO log message class BiDirectionalPump(Pump): def __init__(self, forward_pin, backward_pin): super().__init__(forward_pin) self.backward_pin = backward_pin self.backward_pump = Pin(backward_pin, Pin.OUT) self.backward_pump.value(0) self.bidirectional = True def on(self, duration=None, direction='forward'): pico_led.on() if direction == 'forward': self.backward_pump.value(0) self.pump.value(PUMP_ON) else: self.pump.value(0) self.backward_pump.value(PUMP_ON) self.pump_on = True self.time_last_on = time.time() if duration: time.sleep(duration) self.off() def off(self): self.pump.value(0) self.backward_pump.value(0) pico_led.off() self.pump_on = False