from machine import Pin from time import sleep import sys # Pin definition R1 = Pin(14, Pin.OUT) R2 = Pin(13, Pin.OUT) R3 = Pin(12, Pin.OUT) R4 = Pin(11, Pin.OUT) R5 = Pin(10, Pin.OUT) # State definition # untuk kondisi active low atau active high ON = 0 OFF = 1 def relay_control(id, isON): if id == 1 : R1.value(ON if isON else OFF) print("R1","ON" if isON else "OFF") elif id==2 : R2.value(ON if isON else OFF) print("R2","ON" if isON else "OFF") elif id==3 : R3.value(ON if isON else OFF) print("R3","ON" if isON else "OFF") elif id==4 : R4.value(ON if isON else OFF) print("R4","ON" if isON else "OFF") elif id==5 : R5.value(ON if isON else OFF) print("R5","ON" if isON else "OFF") else: print("Invalid ID") def all_on(): for i in range(1,6): # 1..5 relay_control(i,True) def all_off(): for i in range(1,6): # 1..5 relay_control(i,False) def init_relay(): # first boot all_off() # nyalain satu per satu dengan interval 5 detik sleep(5) for i in range(1,6): # 1 .. 5 relay_control(i,True) sleep(5) init_relay() while True: line = sys.stdin.readline() # reads until \n if not line: # nothing received sleep(0.01) continue cmd = line.strip().upper() # valid command Rx=ON for ON # valid command Rx=OFF for OFF if len(cmd) < 5 : # so minimum cmd length is 5 bytes continue if len(cmd) > 6 : # so maximum cmd length is 6 bytes continue if cmd == "RX=ON": all_on() elif cmd == "RX=OFF": all_off() elif cmd == "R1=ON": relay_control(1,True) elif cmd == "R1=OFF": relay_control(1,False) elif cmd == "R2=ON": relay_control(2,True) elif cmd == "R2=OFF": relay_control(2,False) elif cmd == "R3=ON": relay_control(3,True) elif cmd == "R3=OFF": relay_control(3,False) elif cmd == "R4=ON": relay_control(4,True) elif cmd == "R4=OFF": relay_control(4,False) elif cmd == "R5=ON": relay_control(5,True) elif cmd == "R5=OFF": relay_control(5,False) elif cmd == "REINIT": init_relay()