Skip to content

Commit 4891824

Browse files
committed
Touch Switch added
1 parent 26fd35a commit 4891824

File tree

4 files changed

+297
-0
lines changed

4 files changed

+297
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import machine
2+
from machine import Pin
3+
from relay_control import RELAY
4+
from button_control import TouchButton
5+
6+
from machine import Timer
7+
8+
#Timer
9+
tim5 = Timer(-1)
10+
11+
12+
#Wemos D1 mini
13+
#Led
14+
LED_2_pin = 2
15+
LED_2 = RELAY(name="Led2", pin_num=LED_2_pin, on_value=0, off_value=1, state_on=1, state_off=0, default=1)
16+
17+
18+
#BUTTON
19+
button_pin = 4
20+
21+
b4 = TouchButton(name="Led2", pin_num=button_pin, pull=Pin.PULL_UP, debug=True, relay_control=LED_2, on_value=1 )
22+
b4.start()
23+
24+
25+
#BUTTON CHECK
26+
def button_push_check():
27+
b4.push_check
28+
29+
30+
31+
32+
def run_timer():
33+
tim5.init(period=300, mode=Timer.PERIODIC, callback=lambda t: button_push_check())
34+
35+
def main():
36+
run_timer()
37+
38+
if __name__ == '__main__':
39+
main()
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
2+
from machine import Pin
3+
4+
class RELAY:
5+
'''
6+
Relay Control with state
7+
'''
8+
9+
# init
10+
def __init__(self, name = None, pin_num = None, on_value=1, off_value=0, state_on="ON", state_off="OFF", default = 0):
11+
self._relay = Pin(pin_num, Pin.OUT)
12+
self.on_value = on_value
13+
self.off_value = off_value
14+
self.cb = None
15+
self.name = name
16+
self.state_on = state_on
17+
self.state_off = state_off
18+
self.set_state(default)
19+
self.state = self.get_state()
20+
21+
def save_state(self):
22+
self.state = self.get_state()
23+
if self.cb:
24+
self.cb(self)
25+
26+
def set_state(self, reguest_value):
27+
self._relay.value(reguest_value)
28+
self.save_state()
29+
30+
def get_state(self):
31+
32+
if self.on_value == self._relay.value():
33+
return self.state_on
34+
else:
35+
return self.state_off
36+
37+
def change_state(self):
38+
39+
if self._relay.value() == 1:
40+
self._relay.value(0)
41+
else:
42+
self._relay.value(1)
43+
44+
self.save_state()
45+
46+
47+
def set_callback(self, f):
48+
self.cb = f
49+
50+
51+
52+
53+
54+
55+
56+
57+
58+
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
2+
from machine import Pin
3+
import time
4+
5+
class TouchButton:
6+
'''
7+
B
8+
'''
9+
10+
# init
11+
def __init__(self, name=None, pin_num=False, pull=False, debug=False, relay_control=None, on_value=1, off_value=0, state_on="ON", state_off="OFF"):
12+
13+
self._switch = Pin(pin_num, Pin.IN, pull)
14+
self.name = name
15+
self.debug = debug
16+
self.status = 0
17+
18+
self.relay = relay_control
19+
self.button = None
20+
21+
self.on_value = on_value
22+
self.off_value = off_value
23+
24+
self.state_on = state_on
25+
self.state_off = state_off
26+
27+
self.state = state_off
28+
29+
self._value = off_value
30+
31+
self.cb = None
32+
33+
34+
35+
def change_state(self):
36+
37+
self._value = self._switch.value()
38+
39+
if self._value == self.on_value:
40+
self.state = self.state_on
41+
elif self._value == self.off_value:
42+
self.state = self.state_off
43+
44+
if self.cb:
45+
self.cb(self)
46+
47+
self.status = 20
48+
49+
50+
51+
def makebutton(self):
52+
53+
while True:
54+
55+
if self._switch.value() != self._value:
56+
57+
if self.relay:
58+
self.relay.change_state()
59+
60+
self.change_state()
61+
62+
self.status = 30
63+
64+
yield True
65+
66+
67+
def start(self):
68+
69+
self.button = self.makebutton() # Generator start
70+
next(self.button)
71+
72+
def stop(self):
73+
74+
self.button = None # Generator stop
75+
76+
@property
77+
def push_check(self):
78+
'''
79+
T
80+
'''
81+
self.status = 10
82+
try:
83+
next(self.button)
84+
except StopIteration:
85+
if self.debug:
86+
print("StopIteration")
87+
return -255
88+
89+
value = self.status
90+
91+
return value
92+
93+
def set_callback(self, f):
94+
self.cb = f
95+
96+
97+
98+
99+
100+
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
2+
from machine import Pin
3+
import time
4+
5+
class TouchButton:
6+
'''
7+
B
8+
'''
9+
10+
# init
11+
def __init__(self, name=None, pin_num=False, pull=False, debug=False, relay_control=None, on_value=1, off_value=0, state_on="ON", state_off="OFF"):
12+
13+
self._switch = Pin(pin_num, Pin.IN, pull)
14+
self.name = name
15+
self.debug = debug
16+
self.status = 0
17+
18+
self.relay = relay_control
19+
self.button = None
20+
21+
self.on_value = on_value
22+
self.off_value = off_value
23+
24+
self.state_on = state_on
25+
self.state_off = state_off
26+
27+
self.state = state_off
28+
29+
self._value = off_value
30+
31+
self.cb = None
32+
33+
34+
35+
def change_state(self):
36+
37+
self._value = self._switch.value()
38+
39+
if self._value == self.on_value:
40+
self.state = self.state_on
41+
elif self._value == self.off_value:
42+
self.state = self.state_off
43+
44+
if self.cb:
45+
self.cb(self)
46+
47+
self.status = 20
48+
49+
50+
51+
def makebutton(self):
52+
53+
while True:
54+
55+
if self._switch.value() != self._value:
56+
57+
if self.relay:
58+
self.relay.change_state()
59+
60+
self.change_state()
61+
62+
self.status = 30
63+
64+
yield True
65+
66+
67+
def start(self):
68+
69+
self.button = self.makebutton() # Generator start
70+
next(self.button)
71+
72+
def stop(self):
73+
74+
self.button = None # Generator stop
75+
76+
@property
77+
def push_check(self):
78+
'''
79+
T
80+
'''
81+
self.status = 10
82+
try:
83+
next(self.button)
84+
except StopIteration:
85+
if self.debug:
86+
print("StopIteration")
87+
return -255
88+
89+
value = self.status
90+
91+
return value
92+
93+
def set_callback(self, f):
94+
self.cb = f
95+
96+
97+
98+
99+
100+

0 commit comments

Comments
 (0)