from machine import Pin
import time
# Define the GPIO pins for each relay
relay_pins = [
Pin(1, Pin.OUT), # Relay 1 - Change pin numbers to match your setup
Pin(2, Pin.OUT), # Relay 2
Pin(3, Pin.OUT), # Relay 3
Pin(4, Pin.OUT), # Relay 4
Pin(5, Pin.OUT), # Relay 5
Pin(8, Pin.OUT), # Relay 6
Pin(9, Pin.OUT), # Relay 7
Pin(10, Pin.OUT), # Relay 8
]
# Function to turn on a specific relay
def relay_on(relay_number):
if 1 <= relay_number <= 8:
relay_pins[relay_number - 1].value(1) # Assuming HIGH activates the relay. Change to 0 if needed
print(f"Relay {relay_number} ON")
else:
print("Invalid relay number. Must be between 1 and 8.")
# Function to turn off a specific relay
def relay_off(relay_number):
if 1 <= relay_number <= 8:
relay_pins[relay_number - 1].value(0) # Assuming LOW deactivates the relay. Change to 1 if needed.
print(f"Relay {relay_number} OFF")
else:
print("Invalid relay number. Must be between 1 and 8.")
# Function to toggle a specific relay
def relay_toggle(relay_number):
if 1 <= relay_number <= 8:
current_state = relay_pins[relay_number - 1].value()
relay_pins[relay_number - 1].value(1 - current_state) # Inverts the current state.
print(f"Relay {relay_number} toggled")
else:
print("Invalid relay number. Must be between 1 and 8.")
# Example usage:
try:
while True:
relay_on(1)
time.sleep(1)
relay_off(1)
time.sleep(1)
relay_toggle(2)
time.sleep(2)
relay_toggle(2)
time.sleep(2)
for i in range(1, 9): # turn all on then all off
relay_on(i)
time.sleep(2)
for i in range(1, 9):
relay_off(i)
time.sleep(2)
# You can add more complex control logic here
except KeyboardInterrupt:
print("Program stopped by user.")
for pin in relay_pins:
pin.value(0) # turn off all relays on exit.