33 #if (defined(__AVR__) || defined(ARDUINO_ARCH_SAM)) 34 #include <avr/pgmspace.h> 47 #define RFS_START 0x00 48 #define RFS_CW_FINAL 0x01 49 #define RFS_CW_BEGIN 0x02 50 #define RFS_CW_NEXT 0x03 51 #define RFS_CCW_BEGIN 0x04 52 #define RFS_CCW_FINAL 0x05 53 #define RFS_CCW_NEXT 0x06 55 static const PROGMEM uint8_t fullStepTable[7][4] = {
89 _pin1(pin1), _pin2(pin2), _state(0), _sensitivity(sensitivity)
93 pinMode(_pin1, INPUT_PULLUP);
94 pinMode(_pin2, INPUT_PULLUP);
123 unsigned long timeStamp;
124 unsigned long changeTime;
127 pinState = (digitalRead(_pin1) << 1) | digitalRead(_pin2);
130 _state = pgm_read_byte(&fullStepTable[_state & 0x0f][pinState]);
133 switch (_state & 0x30) {
146 if (rotaryState != 0) {
147 timeStamp = millis();
148 changeTime = timeStamp - _lastChange;
149 _lastChange = timeStamp;
152 if (changeTime < (_sensitivity / 2)) {
154 }
else if (changeTime < _sensitivity) {
170 _sensitivity = sensitivity;
#define RFS_CW_FINAL
Rotary full step clock wise final.
#define RFS_CW_BEGIN
Rotary full step clock begin.
void setSensitivity(uint8_t sensitivity)
Set sensitivity value.
int read()
Read Rotary Encoder state.
#define RFS_START
Rotary full step start.
#define RFS_CCW_NEXT
Rotary full step counter clockwise next.
#define RFS_CCW_FINAL
Rotary full step counter clockwise final.
#define DIR_CCW
Counter-clockwise step.
#define RFS_CW_NEXT
Rotary full step clock next.
RotaryFullStep(uint8_t pin1, uint8_t pin2, bool pullUp=true, uint8_t sensitivity=100)
Constructor full step Rotary Encoder.
#define DIR_CW
Clockwise step.
#define DIR_NONE
No complete step yet.
#define RFS_CCW_BEGIN
Rotary full step counter clockwise begin.
uint8_t getSensitivity()
Get sensitivity value.
Three speed full step Rotary Encoder library for Arduino.