rotary-encoder-embedded
A rotary encoder library for embedded rust applications
features
no-std
support- Suitable for gray-code incremental encoders
- Implemented with embedded-hal (https://docs.rs/embedded-hal/0.2.7/embedded_hal)
modes
The RotaryEncoder
can operate in a number of different modes, these modes provide different types of feature sets and are individually gated behind feature flags to keep the binary size to a minimum.
The following modes are currently provided:
Feature flag | Mode | Desc. |
---|---|---|
standard |
StandardMode |
Uses a state machine for transitions |
angular-velocity |
AngularVelocityMode |
Same as standard but with additional angular-velocity calculations |
StandardMode
example
!
A note about GPIO or Timer interrupt usage
I've experimented a lot with different combinations in order to make Rotary Encoders behave predictably because generally speaking they are fickle at best. From my experimentation I've learnt that using GPIO pin based interrupts generally isn't a good idea because they are more prone to noise and increase the risk of misfires and jumps. Timers on the other hand provide a low pass filtering quality because they don't pick up higher frequency switching that GPIO interrupts do. I have found that using a Timer between 850-1000Hz seems to work best.