feat:encoder with existing lib (#2)
Co-authored-by: Clement <c.boesmier@aptatio.com> Reviewed-on: #2
This commit is contained in:
54
lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp
Normal file
54
lib/SwitchableEncodeur/src/SwitchableEncodeur.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include "../include/SwitchableEncodeur.h"
|
||||
|
||||
IRAM_ATTR void switchEncoder() {
|
||||
SwitchableEncodeur::getInstance()->addMenu();
|
||||
}
|
||||
|
||||
SwitchableEncodeur* SwitchableEncodeur::instance = nullptr;
|
||||
|
||||
SwitchableEncodeur::SwitchableEncodeur(uint8_t pin1, uint8_t pin2, uint8_t pinSW, int nbMenu): Encoder(pin1, pin2){
|
||||
SwitchableEncodeur::instance = this;
|
||||
this->menu = 0;
|
||||
this->nbMenu = nbMenu;
|
||||
pinMode(pinSW, INPUT_PULLUP);
|
||||
attachInterrupt(digitalPinToInterrupt(pinSW), switchEncoder, RISING);//FIXME: maybe change to FALLING
|
||||
this->oldPosition = -999;
|
||||
}
|
||||
|
||||
|
||||
void SwitchableEncodeur::resetMenu() {
|
||||
this->menu = 0;
|
||||
}
|
||||
|
||||
void SwitchableEncodeur::addMenu() {
|
||||
this->menu++;
|
||||
if (this->menu > this->nbMenu) {
|
||||
this->menu = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int SwitchableEncodeur::getMenu() {
|
||||
return this->menu;
|
||||
}
|
||||
|
||||
SwitchableEncodeur* SwitchableEncodeur::getInstance() {
|
||||
return SwitchableEncodeur::instance;
|
||||
}
|
||||
|
||||
bool SwitchableEncodeur::update() {
|
||||
bool sortie = false;
|
||||
long newPosition = this->read()/4;
|
||||
if (newPosition != this->oldPosition) {
|
||||
this->oldPosition = newPosition;
|
||||
sortie = true;
|
||||
}
|
||||
return sortie;
|
||||
}
|
||||
|
||||
int SwitchableEncodeur::getValue() {
|
||||
return this->oldPosition;
|
||||
}
|
||||
|
||||
void SwitchableEncodeur::resetValue() {
|
||||
this->oldPosition = 0;
|
||||
}
|
Reference in New Issue
Block a user