-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
114 lines (83 loc) · 2.7 KB
/
Copy pathmain.py
File metadata and controls
114 lines (83 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from machine import Pin
import time
import cmd
dev_to_pin = {
1: Pin(16, mode=Pin.OUT, value=1), #D0
2: Pin(5, mode=Pin.OUT, value=1), #D1
3: Pin(4, mode=Pin.OUT, value=1), #D2
4: Pin(0, mode=Pin.OUT, value=1), #D3
5: Pin(14, mode=Pin.OUT, value=1), #D5
6: Pin(12, mode=Pin.OUT, value=1), #D6
7: Pin(13, mode=Pin.OUT, value=1), #D7
8: Pin(15, mode=Pin.OUT, value=1), #D8
}
class Shell(cmd.Cmd):
#prompt = "you@world:/$ "
prompt = "# "
@staticmethod
def _check_dev(dev):
if dev == "all":
return -1
try:
dev = int(dev)
except:
print("Error: argument #1 must be a number")
return None
if not dev in dev_to_pin:
print("Error: device #" + str(dev) + " out of bound")
return None
return dev
def do_EOF(self, line):
print()
return True
def do_exit(self, line):
return self.do_EOF(line)
def do_y(self, dev):
dev = Shell._check_dev(dev)
if dev == None:
return False
# if -1 means all devices
act_devs = [dev] if dev != -1 else dev_to_pin.keys()
for dev in act_devs:
print("Turning ON dev #" + str(dev) + "... ", end="")
dev_to_pin[dev].value(1)
print("OK.")
def do_k(self, dev):
dev = Shell._check_dev(dev)
if dev == None:
return False
act_devs = [dev] if dev != -1 else dev_to_pin.keys()
for dev in act_devs:
print("Turning OFF dev #" + str(dev) + "... ", end="")
dev_to_pin[dev].value(0)
print("OK.")
def do_r(self, dev):
dev = Shell._check_dev(dev)
if dev == None:
return False
act_devs = [dev] if dev != -1 else dev_to_pin.keys()
for dev in act_devs:
print("Switching dev #" + str(dev))
dev_to_pin[dev].value(0)
time.sleep(1)
for dev in act_devs:
dev_to_pin[dev].value(1)
def do_s(self, line):
print()
sorted_keys = sorted(dev_to_pin.keys())
header = "".join(["{:^5}".format("#" + str(p)) for p in sorted_keys])
print(header)
print("-" * len(header))
for k in sorted_keys:
print("{:^5}".format("ON" if dev_to_pin[k].value() == 1 else "OFF"), end="")
#state = "".join(["{:^5}".format("ON" if p.value() == 1 else "OFF") for p in dev_to_pin.values()])
#print(state)
print()
print()
def do_test(self, line):
pin = Pin(5, Pin.OUT)
pin.value(pin.value() ^ 1)
print("New value is " + str(pin.value()))
def do_loop():
Shell().cmdloop()
do_loop()