mirror of
https://gitlab.com/wirelos/sprocket-lib.git
synced 2025-12-16 21:34:08 +01:00
Merge branch 'illucat' into 'master'
Illucat See merge request wirelos/sprocket-core!7
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
; http://docs.platformio.org/page/projectconf.html
|
; http://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
env_default = button
|
env_default = illucat
|
||||||
|
|
||||||
[common]
|
[common]
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
|||||||
@@ -13,13 +13,15 @@ class Button : public Sprocket {
|
|||||||
Task btnTask;
|
Task btnTask;
|
||||||
MeshNet* net;
|
MeshNet* net;
|
||||||
int pin;
|
int pin;
|
||||||
|
int warnlevel = 0;
|
||||||
|
int cycleEnd = 5;
|
||||||
Button(SprocketConfig cfg) : Sprocket(cfg) {}
|
Button(SprocketConfig cfg) : Sprocket(cfg) {}
|
||||||
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
||||||
pin = D2;
|
pin = D2;
|
||||||
pinMode(pin, INPUT_PULLUP);
|
pinMode(pin, INPUT_PULLUP);
|
||||||
net = static_cast<MeshNet*>(network);
|
net = static_cast<MeshNet*>(network);
|
||||||
net->mesh.onReceive(bind(&Button::receivedCallback,this, _1, _2));
|
net->mesh.onReceive(bind(&Button::receivedCallback,this, _1, _2));
|
||||||
btnTask.set(TASK_MILLISECOND * 500, TASK_FOREVER,
|
btnTask.set(TASK_MILLISECOND * 250, TASK_FOREVER,
|
||||||
bind(&Button::readPin, this, net));
|
bind(&Button::readPin, this, net));
|
||||||
scheduler->addTask(btnTask);
|
scheduler->addTask(btnTask);
|
||||||
btnTask.enable();
|
btnTask.enable();
|
||||||
@@ -27,8 +29,10 @@ class Button : public Sprocket {
|
|||||||
|
|
||||||
void readPin(MeshNet* network){
|
void readPin(MeshNet* network){
|
||||||
if(digitalRead(pin)){
|
if(digitalRead(pin)){
|
||||||
Serial.println("btn pressed");
|
Serial.println("warnlevel: " + String(warnlevel));
|
||||||
network->broadcast("EE1B2E");
|
warnlevel++;
|
||||||
|
if(warnlevel == cycleEnd) warnlevel = 0;
|
||||||
|
network->broadcast(String(warnlevel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,17 +9,27 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
|
#define ARRAY_LENGTH(array) sizeof(array)/sizeof(array[0])
|
||||||
|
|
||||||
|
enum PIXEL_MODES {BLACK = 0x000000, RED = 0xFF0000, GREEN = 0x00FF00, YELLOW = 0xffff00, BLUE = 0x0000FF, ORANGE = 0xffa500};
|
||||||
|
int CAT_MODES[] = {BLACK, RED, GREEN, YELLOW, BLUE, ORANGE};
|
||||||
|
|
||||||
struct NeoPixelConfig {
|
struct NeoPixelConfig {
|
||||||
int pin;
|
int pin;
|
||||||
int length;
|
int length;
|
||||||
|
int mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Illucat : public Sprocket {
|
class Illucat : public Sprocket {
|
||||||
public:
|
public:
|
||||||
MeshNet* net;
|
MeshNet* net;
|
||||||
NeoPattern* pixels;
|
NeoPattern* pixels;
|
||||||
|
int currentMode;
|
||||||
|
|
||||||
Illucat(SprocketConfig cfg, NeoPixelConfig pixelCfg) : Sprocket(cfg) {
|
Illucat(SprocketConfig cfg, NeoPixelConfig pixelCfg) : Sprocket(cfg) {
|
||||||
pixels = new NeoPattern(pixelCfg.length, pixelCfg.pin, NEO_GRB + NEO_KHZ800, [](int pixels){});
|
pixels = new NeoPattern(pixelCfg.length, pixelCfg.pin, NEO_GRB + NEO_KHZ800, [](int pixels){});
|
||||||
|
pixels->begin();
|
||||||
|
pixels->setBrightness(64);
|
||||||
}
|
}
|
||||||
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
Sprocket* activate(Scheduler* scheduler, Network* network) {
|
||||||
net = static_cast<MeshNet*>(network);
|
net = static_cast<MeshNet*>(network);
|
||||||
@@ -29,7 +39,24 @@ class Illucat : public Sprocket {
|
|||||||
|
|
||||||
void messageReceived( uint32_t from, String &msg ) {
|
void messageReceived( uint32_t from, String &msg ) {
|
||||||
Serial.printf("illucat: received from %u msg=%s\n", from, msg.c_str());
|
Serial.printf("illucat: received from %u msg=%s\n", from, msg.c_str());
|
||||||
setHexColor(msg.c_str());
|
StaticJsonBuffer<200> jsonBuffer;
|
||||||
|
JsonObject& root = jsonBuffer.parseObject(msg);
|
||||||
|
if (!root.success()) {
|
||||||
|
Serial.println("parseObject() failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
changeMode(root["severity"]);
|
||||||
|
/* if(root["action"] == "pressed") {
|
||||||
|
}
|
||||||
|
if(root["action"] == "dial") {
|
||||||
|
changeMode("0");
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
void changeMode(const char *mode){
|
||||||
|
currentMode = atoi(mode);
|
||||||
|
Serial.println(currentMode);
|
||||||
|
pixels->ColorSet(CAT_MODES[currentMode]);
|
||||||
|
pixels->show();
|
||||||
}
|
}
|
||||||
void setHexColor(const char *hex){
|
void setHexColor(const char *hex){
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
|
|||||||
Reference in New Issue
Block a user