/* * RotaryControler.cpp * * Created on: 04.02.2022 * Author: FSmilari */ #include "RotaryControler.h" /***************** ** Constructors. ****************/ RotaryControler::RotaryControler(int RotEnc_Dta_Pin, int RotEnc_Clk_Pin, int RotEnc_Switch_Pin) : Encoder(RotEnc_Dta_Pin, RotEnc_Clk_Pin, RotaryEncoder::LatchMode::FOUR3), RotarySwitch(RotEnc_Switch_Pin, true, 2000) { position = 0; Encoder.setPosition(position); } /****************** ** Public methods *****************/ void RotaryControler::tick(void) { Encoder.tick(); } void RotaryControler::resetPosition(void) { Encoder.setPosition(0L); } long RotaryControler::getPosition(void) { return Encoder.getPosition(); } int RotaryControler::getDirection(void) { return (int) Encoder.getPosition(); } bool RotaryControler::isSwitchPressed(void) { return RotarySwitch.isPressed(); } bool RotaryControler::isSwitchLongPressed(void) { return RotarySwitch.isLongPressed(); } void RotaryControler::setDebounceTime(unsigned long time) { RotarySwitch.setDebounceTime(time); } void RotaryControler::loop(void) { RotarySwitch.loop(); Encoder.tick(); } RotaryEncoder::Direction RotaryControler::getEncoderMove() { long newPos = Encoder.getPosition(); RotaryEncoder::Direction dir = Encoder.getDirection(); if (position != newPos) { Serial.print("pos:"); Serial.print(newPos); Serial.print(" dir:"); Serial.println((int) dir); position = newPos; } return dir; }