diff --git a/encoders/ENCODERS.md b/encoders/ENCODERS.md index 28f9555..b9bf49e 100644 --- a/encoders/ENCODERS.md +++ b/encoders/ENCODERS.md @@ -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 diff --git a/encoders/encoder.py b/encoders/encoder.py index 52bccfa..8cf6274 100644 --- a/encoders/encoder.py +++ b/encoders/encoder.py @@ -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): diff --git a/encoders/encoder_portable.py b/encoders/encoder_portable.py index e7526fe..7e0e2c9 100644 --- a/encoders/encoder_portable.py +++ b/encoders/encoder_portable.py @@ -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 diff --git a/encoders/encoder_timed.py b/encoders/encoder_timed.py index 89018c6..d46e630 100644 --- a/encoders/encoder_timed.py +++ b/encoders/encoder_timed.py @@ -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):