mirror of
https://gitlab.com/wirelos/sprocket-plugin-gpio.git
synced 2025-12-14 13:26:48 +01:00
44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
#include "config.h"
|
|
#include "Sprocket.h"
|
|
#include "inputs/rotary/RotaryPlugin.h"
|
|
#include "inputs/pot/PotPlugin.h"
|
|
|
|
Sprocket *sprocket;
|
|
RotaryPlugin *r1;
|
|
PotPlugin* p1;
|
|
|
|
void addRotary(Sprocket *s, Plugin *r, const char *topic)
|
|
{
|
|
String btnTopic = String(topic) + String("/button");
|
|
s->subscribe(topic, bind([](String label, String val) { PRINT_MSG(Serial, label.c_str(), val.c_str()); }, topic, _1));
|
|
s->subscribe(btnTopic, bind([](String label, String val) { PRINT_MSG(Serial, label.c_str(), val.c_str()); }, btnTopic, _1));
|
|
s->addPlugin(r);
|
|
}
|
|
|
|
void addPot(Sprocket* s, int pin, const char* topic)
|
|
{
|
|
s->addPlugin(
|
|
new PotPlugin({pin, POT_THRESHOLD, POT_POLL_INTERVAL, topic}));
|
|
s->subscribe(topic, bind([](String label, String val){
|
|
PRINT_MSG(Serial, label.c_str(), val.c_str());
|
|
}, topic, _1));
|
|
}
|
|
|
|
void setup()
|
|
{
|
|
sprocket = new Sprocket({STARTUP_DELAY, SERIAL_BAUD_RATE});
|
|
r1 = new RotaryPlugin({35, 34, 21, -1, 50, 0, 255, true, "rotary1"});
|
|
r1->rotaryEncoder->setup([] { r1->rotaryEncoder->readEncoder_ISR(); });
|
|
addRotary(sprocket, r1, "rotary1");
|
|
addPot(sprocket, 36, "pot1");
|
|
addPot(sprocket, 37, "pot2");
|
|
addPot(sprocket, 38, "pot3");
|
|
addPot(sprocket, 39, "pot4");
|
|
sprocket->activate();
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
sprocket->loop();
|
|
yield();
|
|
} |