Browse Source

Update encoder code to use soft config data

v2
Xose Pérez 5 years ago
parent
commit
983b37d34a
2 changed files with 38 additions and 50 deletions
  1. +13
    -0
      code/espurna/config/device.h
  2. +25
    -50
      code/espurna/encoder.ino

+ 13
- 0
code/espurna/config/device.h View File

@ -505,6 +505,11 @@ enum devices {
#define NETBIOS_SUPPORT 1
#define SSDP_SUPPORT 1
// Encoder support
#ifndef ENCODER_SUPPORT
#define ENCODER_SUPPORT 1
#endif
#endif
// -----------------------------------------------------------------------------
@ -561,6 +566,10 @@ enum devices {
#define RELAY_PROVIDER RELAY_PROVIDER_LIGHT
#define LIGHT_PROVIDER LIGHT_PROVIDER_DIMMER
#ifndef ENCODER_SUPPORT
#define ENCODER_SUPPORT 1
#endif
#elif ESPURNA_IMAGE == ESPURNA_MY92XX
#define ESPURNA_IMAGE_NAME "MY92XX"
@ -569,6 +578,10 @@ enum devices {
#define LIGHT_PROVIDER LIGHT_PROVIDER_MY92XX
#define MY92XX_COMMAND MY92XX_COMMAND_DEFAULT
#ifndef ENCODER_SUPPORT
#define ENCODER_SUPPORT 1
#endif
#elif ESPURNA_IMAGE == ESPURNA_EMON
#define ESPURNA_IMAGE_NAME "EMON"


+ 25
- 50
code/espurna/encoder.ino View File

@ -31,60 +31,37 @@ void _encoderConfigure() {
}
_encoders.clear();
// Load encoders
#if (ENCODER1_PIN1 != GPIO_NONE) && (ENCODER1_PIN2 != GPIO_NONE)
{
_encoders.push_back({
new Encoder(ENCODER1_PIN1, ENCODER1_PIN2),
ENCODER1_BUTTON_PIN, ENCODER1_BUTTON_LOGIC, ENCODER1_BUTTON_MODE, ENCODER1_MODE,
ENCODER1_CHANNEL1, ENCODER1_CHANNEL2
});
}
#endif
#if (ENCODER2_PIN1 != GPIO_NONE) && (ENCODER2_PIN2 != GPIO_NONE)
{
_encoders.push_back({
new Encoder(ENCODER2_PIN1, ENCODER2_PIN2),
ENCODER2_BUTTON_PIN, ENCODER2_BUTTON_LOGIC, ENCODER2_BUTTON_MODE, ENCODER2_MODE,
ENCODER2_CHANNEL1, ENCODER2_CHANNEL2
});
}
#endif
#if (ENCODER3_PIN1 != GPIO_NONE) && (ENCODER3_PIN2 != GPIO_NONE)
{
_encoders.push_back({
new Encoder(ENCODER3_PIN1, ENCODER3_PIN2),
ENCODER3_BUTTON_PIN, ENCODER3_BUTTON_LOGIC, ENCODER3_BUTTON_MODE, ENCODER3_MODE,
ENCODER3_CHANNEL1, ENCODER3_CHANNEL2
});
}
#endif
#if (ENCODER4_PIN1 != GPIO_NONE) && (ENCODER4_PIN2 != GPIO_NONE)
{
_encoders.push_back({
new Encoder(ENCODER4_PIN1, ENCODER4_PIN2),
ENCODER4_BUTTON_PIN, ENCODER4_BUTTON_LOGIC, ENCODER4_BUTTON_MODE, ENCODER4_MODE,
ENCODER4_CHANNEL1, ENCODER4_CHANNEL2
});
}
#endif
#if (ENCODER5_PIN1 != GPIO_NONE) && (ENCODER5_PIN2 != GPIO_NONE)
{
unsigned char index = 0;
while (index < MAX_COMPONENTS) {
unsigned char pin1 = getSetting("enc1stGPIO", index, GPIO_NONE).toInt();
unsigned char pin2 = getSetting("enc2ndGPIO", index, GPIO_NONE).toInt();
if (GPIO_NONE == pin1 || GPIO_NONE == pin2) break;
unsigned char button_pin = getSetting("encBtnGPIO", index, GPIO_NONE).toInt();
unsigned char button_logic = getSetting("encBtnLogic", index, GPIO_LOGIC_INVERSE).toInt();
unsigned char button_mode = getSetting("encBtnMode", index, INPUT_PULLUP).toInt();
unsigned char mode = getSetting("encMode", index, ENCODER_MODE_RATIO).toInt();
unsigned char channel1 = getSetting("enc1stCh", index, 0).toInt();
unsigned char channel2 = getSetting("enc2ndCh", index, 1).toInt();
_encoders.push_back({
new Encoder(ENCODER5_PIN1, ENCODER5_PIN2),
ENCODER5_BUTTON_PIN, ENCODER5_BUTTON_LOGIC, ENCODER5_BUTTON_MODE, ENCODER5_MODE,
ENCODER5_CHANNEL1, ENCODER5_CHANNEL2
new Encoder(pin1, pin2),
button_pin, button_logic, button_mode,
mode,
channel1, channel2
});
}
#endif
// Setup encoders
for (unsigned char i=0; i<_encoders.size(); i++) {
if (GPIO_NONE != _encoders[i].button_pin) {
pinMode(_encoders[i].button_pin, _encoders[i].button_mode);
if (GPIO_NONE != button_pin) {
pinMode(button_pin, button_mode);
}
++index;
}
DEBUG_MSG_P(PSTR("[ENCODER] Encoders: %u\n"), _encoders.size());
}
void _encoderLoop() {
@ -149,8 +126,6 @@ void encoderSetup() {
espurnaRegisterLoop(_encoderLoop);
espurnaRegisterReload(_encoderConfigure);
DEBUG_MSG_P(PSTR("[ENCODER] Number of encoders: %u\n"), _encoders.size());
}
#endif // ENCODER_SUPPORT && (LIGHT_PROVIDER != LIGHT_PROVIDER_NONE)

Loading…
Cancel
Save