@@ -19,6 +19,7 @@ def __init__(self, i2c, address: int | list | tuple = 0x40) -> None:
19
19
raise UnitError ("Encoder Unit maybe not connect" )
20
20
self ._last_value = self ._get_rotary_value ()
21
21
self ._zero_value = self ._last_value
22
+ self ._start_value = self ._last_value
22
23
23
24
def get_rotary_status (self ):
24
25
val = self ._get_rotary_value ()
@@ -28,7 +29,7 @@ def get_rotary_status(self):
28
29
29
30
def get_rotary_value (self ):
30
31
self ._last_value = self ._get_rotary_value ()
31
- return self ._last_value - self ._zero_value
32
+ return self ._start_value + self . _last_value - self ._zero_value
32
33
33
34
def get_rotary_increments (self ):
34
35
tmp = self ._last_value
@@ -39,8 +40,13 @@ def _get_rotary_value(self):
39
40
buf = self ._read_reg_bytes (self ._ENCODER_COUNTER_VALUE_REG , 2 )
40
41
return struct .unpack ("<h" , buf )[0 ]
41
42
43
+ def set_rotary_value (self , value : int ) -> None :
44
+ self ._start_value = value
45
+
42
46
def reset_rotary_value (self ):
43
47
self ._zero_value = self ._get_rotary_value ()
48
+ self ._last_value = self ._zero_value
49
+ self ._start_value = 0
44
50
45
51
def get_button_status (self ) -> bool :
46
52
buf = self ._read_reg_bytes (self ._ENCODER_BUTTON_STATUS_REG , 2 )
0 commit comments