forked from hacklab-lahti/kolava_node
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rotaryenc.py
32 lines (25 loc) · 1013 Bytes
/
rotaryenc.py
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
from __main__ import Module
import machine
from rotary_irq_esp import RotaryIRQ
import uasyncio as asyncio
class RotaryEnc(Module):
def __init__(self, *args, **kwargs):
print("Initializing Rotary encoder")
super().__init__(*args, **kwargs)
self.r = RotaryIRQ(pin_num_clk=self.settings["clk_pin"],
pin_num_dt=self.settings["dt_pin"],
min_val=self.settings["min_val"],
max_val=self.settings["max_val"],
reverse=self.settings["reverse"],
range_mode=eval(self.settings["range_mode"]))
self.start()
async def start(self):
lastval = self.r.value()
while True:
val = self.r.value()
if lastval != val:
lastval = val
self.parent.call_callbacks("display_add_row_callback",row=str(val))
await asyncio.sleep_ms(50)
def after_init_callback(self,*args,**kwargs):
self.parent.loop.create_task(self.start())