Encoders: Fix position rounding

self._pos = value // self.scale
changed to
self._pos = round(value / self.scale)

Add position setter to encoder.py and encoder_timed.py
pull/23/head
IhorNehrutsa 2021-10-08 02:10:07 +03:00
rodzic d6ec83b71f
commit 919479e145
4 zmienionych plików z 8 dodań i 4 usunięć

Wyświetl plik

@ -61,7 +61,7 @@ class Encoder:
def position(self, value=None):
if value is not None:
self._pos = value // self.scale
self._pos = round(value / self.scale)
return self._pos * self.scale
```
If the direction is incorrect, transpose the X and Y pins in the constructor

Wyświetl plik

@ -24,7 +24,9 @@ class Encoder:
self.forward = self.pin_a.value() ^ self.pin_b.value() ^ self.reverse ^ 1
self._pos += 1 if self.forward else -1
def position(self):
def position(self, value=None):
if value is not None:
self._pos = round(value / self.scale)
return self._pos*self.scale
def reset(self):

Wyświetl plik

@ -32,5 +32,5 @@ class Encoder:
def position(self, value=None):
if value is not None:
self._pos = value // self.scale
self._pos = round(value / self.scale)
return self._pos * self.scale

Wyświetl plik

@ -46,7 +46,9 @@ class EncoderTimed:
result *= self.scale
return result if self.forward else -result
def position(self):
def position(self, value=None):
if value is not None:
self._pos = round(value / self.scale)
return self._pos * self.scale
def reset(self):