From ff6cc12e7f7ad2d3745762755800dbab60df223c Mon Sep 17 00:00:00 2001 From: starcalc Date: Wed, 3 Jan 2018 01:07:32 +0100 Subject: [PATCH] Mapping fuer Boxen aktualisiert --- NeoPatterns.cpp | 118 ++++++++++++++++++++++++++++++++++++++++-- NeoPatterns.h | 11 ++++ esp-videoswitcher.ino | 48 +++++++++++------ 3 files changed, 159 insertions(+), 18 deletions(-) diff --git a/NeoPatterns.cpp b/NeoPatterns.cpp index 1047038..a209704 100644 --- a/NeoPatterns.cpp +++ b/NeoPatterns.cpp @@ -11,6 +11,8 @@ NeoPatterns::NeoPatterns(uint16_t pixels, uint8_t pin, uint8_t type, void (*call pixelR_buffer = ( uint8_t* ) calloc( pixels, sizeof( uint8_t ) ); pixelG_buffer = ( uint8_t* ) calloc( pixels, sizeof( uint8_t ) ); pixelB_buffer = ( uint8_t* ) calloc( pixels, sizeof( uint8_t ) ); + setupboxs(); + } void NeoPatterns::Update() { @@ -506,12 +508,122 @@ void NeoPatterns::ColorSet(uint32_t color) } void NeoPatterns::colorBox(uint8_t boxid, uint32_t c){ //color a box - for (int i=boxid*3;i<(boxid+1)*3;i++) { - setPixelColor(i, c); - } +// for (int i=boxid*3;i<(boxid+1)*3;i++) { +// setPixelColor(i, c); +// } + Serial.println("Coloring Box"); + setPixelColor(boxs[boxid].left, c); + setPixelColor(boxs[boxid].middle, c); + setPixelColor(boxs[boxid].right, c); + show(); } +void NeoPatterns::setupboxs() { + boxs[1].left = 55; + boxs[1].middle = 56; + boxs[1].right = 57; + + boxs[2].left = 52; + boxs[2].middle = 53; + boxs[2].right = 54; + + boxs[3].left = 49; + boxs[3].middle = 50; + boxs[3].right = 51; + + boxs[4].left = 46; + boxs[4].middle = 47; + boxs[4].right = 48; + + boxs[5].left = 43; + boxs[5].middle = 44; + boxs[5].right = 45; + + boxs[6].left = 40; + boxs[6].middle = 41; + boxs[6].right = 42; + + boxs[7].left = 33; + boxs[7].middle = 38; + boxs[7].right = 38; + + boxs[8].left = 32; + boxs[8].middle = 37; + boxs[8].right = 37; + + boxs[9].left = 31; + boxs[9].middle = 36; + boxs[9].right = 36; + + boxs[10].left = 30; + boxs[10].middle = 35; + boxs[10].right = 35; + + boxs[11].left = 29; + boxs[11].middle = 28; + boxs[11].right = 27; + + boxs[12].left = 26; + boxs[12].middle = 25; + boxs[12].right = 24; + + boxs[13].left = 23; + boxs[13].middle = 22; + boxs[13].right = 21; + + boxs[14].left = 20; + boxs[14].middle = 19; + boxs[14].right = 18; + + boxs[15].left = 17; + boxs[15].middle = 16; + boxs[15].right = 15; + + boxs[16].left = 14; + boxs[16].middle = 13; + boxs[16].right = 12; + + boxs[17].left = 11; + boxs[17].middle = 10; + boxs[17].right = 9; + + boxs[18].left = 8; + boxs[18].middle = 7; + boxs[18].right = 6; + + boxs[19].left = 5; + boxs[19].middle = 4; + boxs[19].right = 3; + + boxs[20].left = 2; + boxs[20].middle = 1; + boxs[20].right = 0; + + boxs[21].left = 69; + boxs[21].middle = 68; + boxs[21].right = 67; + + boxs[22].left = 66; + boxs[22].middle = 65; + boxs[22].right = 64; + + boxs[23].left = 63; + boxs[23].middle = 62; + boxs[23].right = 61; + + boxs[24].left = 60; + boxs[24].middle = 59; + boxs[24].right = 58; + + // Die unterste Zeile ohne Konsole + boxs[0].left = 34; + boxs[0].middle = 39; + boxs[0].right = 39; +} + + + void NeoPatterns::ColorSetParameters(String parameters) { None(); diff --git a/NeoPatterns.h b/NeoPatterns.h index 648a055..7725727 100644 --- a/NeoPatterns.h +++ b/NeoPatterns.h @@ -39,6 +39,17 @@ class NeoPatterns : public Adafruit_NeoPixel void SetColor2(uint32_t color); //Utilities void ColorSet(uint32_t color); + + struct box + { + int left; + int middle; + int right; + }; + + struct box boxs[25]; + + void setupboxs(); void colorBox(uint8_t boxid, uint32_t c); void ColorSetParameters(String parameters); uint8_t Red(uint32_t color); diff --git a/esp-videoswitcher.ino b/esp-videoswitcher.ino index b3be74d..4a7519c 100644 --- a/esp-videoswitcher.ino +++ b/esp-videoswitcher.ino @@ -5,8 +5,10 @@ #include "NeoPatterns.h" #define PIN D7 -#define BIGPIXELS 20 -#define NUMPIXELS (BIGPIXELS * 3) // 3 LEDs form one pixel +// #define BIGPIXELS 20 +#define NUMPIXELS 70 // 3 LEDs form one pixel +#define NUMBOXS 24 +// #define NUMPIXELS (BIGPIXELS * 3) // 3 LEDs form one pixel // #define NUMPIXELS 60 NeoPatterns strip = NeoPatterns(NUMPIXELS, PIN, NEO_BRG + NEO_KHZ400, &StripComplete); @@ -16,7 +18,7 @@ HomieNode homieNode("pixel", "commands"); #define TIMEOUT 500 #define FW_NAME "esp-videoswitcher" -#define FW_VERSION "1.0.1" +#define FW_VERSION "1.0.2" SoftwareSerial swSer(D2, D1); int currentnumber = 0; @@ -25,6 +27,23 @@ int commandbytes[4]; String output = ""; String output2 = ""; + + +/* + * 25 Boxen insgesamt + * Box 0, 1, 2 + * 0-29 je 3 + * + * 40- + * PS1 = 13: 21, 22, 23 + * SW Pixel + * 1 55, 56, 57 + * 2 52, 53, 54 + * 3 49, 50, 51 + * 4 46, 47, 48 + * + */ + HomieNode switchNode("switch", "switch"); void StripComplete(){ @@ -47,15 +66,12 @@ bool onSetColor(const HomieRange& range, const String& value) { } bool onSetBox(const HomieRange& range, const String& value) { - if (range.index < 0 || range.index > BIGPIXELS) { + if (range.index < 0 || range.index > (NUMBOXS)) { return false; } - strip.None(); - strip.setPixelColor(range.index*3, value.toInt()); - strip.setPixelColor(range.index*3+1, value.toInt()); - strip.setPixelColor(range.index*3+2, value.toInt()); - strip.show(); + strip.colorBox(range.index, value.toInt()); homieNode.setProperty("box_" + String(range.index)).send(value); + return true; } @@ -262,7 +278,6 @@ void loopHandler() { strip.Update(); } - void setup() { Serial.begin(115200); swSer.begin(9600); @@ -276,14 +291,14 @@ void setup() { switchNode.advertise("switch").settable(switchHandler); homieNode.advertiseRange("pixel", 0, NUMPIXELS - 1).settable(onSetPixel); - homieNode.advertiseRange("box", 0, BIGPIXELS - 1).settable(onSetBox); + homieNode.advertiseRange("box", 0, NUMBOXS - 1).settable(onSetBox); homieNode.advertiseRange("color", 0, 1).settable(onSetColor); homieNode.advertise("brightness").settable(onSetBrightness); homieNode.advertise("effect").settable(onSetEffect); homieNode.advertise("clear").settable(onSetClear); homieNode.advertise("length").settable(onSetLength); - homieNode.advertiseRange("pixels", 0, (NUMPIXELS - 1)*7).settable(onSetPixels); - homieNode.advertiseRange("boxs", 0, (BIGPIXELS - 1)*7).settable(onSetBoxs); + // homieNode.advertiseRange("pixels", 0, (NUMPIXELS - 1)*7).settable(onSetPixels); + // homieNode.advertiseRange("boxs", 0, (BIGPIXELS - 1)*7).settable(onSetBoxs); Homie.setup(); @@ -297,15 +312,18 @@ void setup() { ArduinoOTA.setHostname(Homie.getConfiguration().deviceId); ArduinoOTA.onStart([]() { + Serial.println("\nArduinoOTA.onStart()"); strip.clear(); strip.setBrightness(64); }); ArduinoOTA.onEnd([]() { + Serial.println("\nArduinoOTA.onEnd()"); strip.clear(); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - strip.setPixelColor(progress / (total / NUMPIXELS), strip.Color(100, 0, 0)); - strip.show(); + Serial.println("\nArduinoOTA.onProgress()"); +// strip.setPixelColor(progress / (total / NUMPIXELS), strip.Color(100, 0, 0)); +// strip.show(); }); ArduinoOTA.begin();