import machine
import utime
class RelayController:
def __init__(self, sensor_pin, button_pin, door_pin, relay1_pin, relay2_pin, relay3_pin,):
self.button_pin = machine.Pin(button_pin, machine.Pin.IN, machine.Pin.PULL_UP)
self.door_pin = machine.Pin(door_pin, machine.Pin.IN, machine.Pin.PULL_UP)
self.sensor_pin = machine.Pin(sensor_pin, machine.Pin.IN,)
self.relay1_pin = machine.Pin(relay1_pin, machine.Pin.OUT)
self.relay2_pin = machine.Pin(relay2_pin, machine.Pin.OUT)
self.relay3_pin = machine.Pin(relay3_pin, machine.Pin.OUT)
self.relay1_pin.value(0)
self.relay2_pin.value(0)
self.relay3_pin.value(0)
# Desliga o relé quando a classe é criada
self.last_door_open_time = None
def check_door(self):
if self.door_pin.value() == 0: # Porta aberta
if self.last_door_open_time is None:
self.last_door_open_time = utime.time()
else:
elapsed_time = utime.time() - self.last_door_open_time
if elapsed_time >= 5: # Porta aberta há mais de 30 segundos
self.relay1_pin.value(1) # Liga o relé
else:
self.last_door_open_time = None
self.relay1_pin.value(0) # Desliga o relé
def check_button(self):
if self.button_pin.value() == 0: # Botão pressionado
self.relay2_pin.value(1) # Liga o relé
else:
self.relay2_pin.value(0) # Desliga o relé
def check_sensor(self):
if self.sensor_pin.value() == 1: # Movimento detectado
self.relay3_pin.value(1) # Liga o relé
print("Movimento detectado")
else:
self.relay3_pin.value(0) # Desliga o relé
relay_controller = RelayController(sensor_pin=26, button_pin=14, door_pin=25, relay1_pin=5, relay2_pin=3, relay3_pin=4,)
while True:
relay_controller.check_door()
relay_controller.check_button()
relay_controller.check_sensor()
utime.sleep(0.1) # Espera 1ms antes de verificar novamente