101 lines
2.3 KiB
Python
101 lines
2.3 KiB
Python
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()
|
|
|