File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ This example shows how to use the ModulinoKnob class to read the value of a rotary encoder knob asynchronously.
3+
4+ Asyncio is used to read the knob value and to blink the built-in LED at the same time.
5+ The knob is used to increase or decrease a value. The knob is rotated clockwise to increase the value and counter-clockwise to decrease it.
6+
7+ You can register callbacks for the following events:
8+ - Press: The knob is pressed.
9+ - Release: The knob is released.
10+ - Rotate clockwise: The knob is rotated clockwise.
11+ - Rotate counter clockwise: The knob is rotated counter clockwise.
12+
13+ Initial author: Sebastian Romero (s.romero@arduino.cc)
14+ """
15+
16+ from modulino import ModulinoKnob
17+ from machine import Pin
18+ import asyncio
19+
20+ led = Pin ("LED_BUILTIN" , Pin .OUT )
21+
22+ knob = ModulinoKnob ()
23+
24+ knob .on_press = lambda : print ("🔘 Pressed!" )
25+ knob .on_release = lambda : print ("🔘 Released!" )
26+ knob .on_rotate_clockwise = lambda steps , value : print (f"🎛️ Rotated { steps } steps clockwise! Value: { value } " )
27+ knob .on_rotate_counter_clockwise = lambda steps , value : print (f"🎛️ Rotated { steps } steps counter clockwise! Value: { value } " )
28+
29+ async def blink_led ():
30+ while True :
31+ led .value (0 )
32+ await asyncio .sleep (0.5 )
33+ led .value (1 )
34+ await asyncio .sleep (0.5 )
35+
36+ async def read_knob ():
37+ while True :
38+ if (knob .update ()):
39+ print ("👀 Knob value or state changed!" )
40+ await asyncio .sleep_ms (20 )
41+
42+ async def main ():
43+ await asyncio .gather (
44+ blink_led (),
45+ read_knob ()
46+ )
47+
48+ asyncio .run (main ())
You can’t perform that action at this time.
0 commit comments