Files
sprocket-plugin-gpio/src/examples/combined/main.cpp
2018-11-17 11:20:24 +01:00

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();
}