Skip to content

Commit c843a55

Browse files
committed
libs/unit/encoder.py: Add set_rotary_value method.
Signed-off-by: lbuque <[email protected]>
1 parent 383d828 commit c843a55

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

m5stack/libs/unit/encoder.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def __init__(self, i2c, address: int | list | tuple = 0x40) -> None:
1919
raise UnitError("Encoder Unit maybe not connect")
2020
self._last_value = self._get_rotary_value()
2121
self._zero_value = self._last_value
22+
self._start_value = self._last_value
2223

2324
def get_rotary_status(self):
2425
val = self._get_rotary_value()
@@ -28,7 +29,7 @@ def get_rotary_status(self):
2829

2930
def get_rotary_value(self):
3031
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
3233

3334
def get_rotary_increments(self):
3435
tmp = self._last_value
@@ -39,8 +40,13 @@ def _get_rotary_value(self):
3940
buf = self._read_reg_bytes(self._ENCODER_COUNTER_VALUE_REG, 2)
4041
return struct.unpack("<h", buf)[0]
4142

43+
def set_rotary_value(self, value: int) -> None:
44+
self._start_value = value
45+
4246
def reset_rotary_value(self):
4347
self._zero_value = self._get_rotary_value()
48+
self._last_value = self._zero_value
49+
self._start_value = 0
4450

4551
def get_button_status(self) -> bool:
4652
buf = self._read_reg_bytes(self._ENCODER_BUTTON_STATUS_REG, 2)

0 commit comments

Comments
 (0)