kopia lustrzana https://github.com/peterhinch/micropython-samples
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.pypull/23/head
rodzic
d6ec83b71f
commit
919479e145
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
Ładowanie…
Reference in New Issue