Bläddra i källkod

Start animation stardust, start local brightness and max brightness

Emil 3 år sedan
förälder
incheckning
31109021e2
5 ändrade filer med 62 tillägg och 17 borttagningar
  1. 27 0
      src/Animations.cpp
  2. 7 2
      src/Animations.h
  3. 3 0
      src/LightCluster.h
  4. 2 2
      src/WiFiPass.h
  5. 23 13
      src/main.cpp

+ 27 - 0
src/Animations.cpp

@@ -176,3 +176,30 @@ void Animations::setup_randomColors() {
         Serial.println("");*/
     }
 }
+
+
+void Animations::stardust() {
+    for (int i = 0; i < numLeds; i++) {
+        lights[i].animI++;
+
+        setColorFromTarget(&lights[i]);
+
+        if (lights[i].animI == lights[i].endTick) {
+            //if bright make light target off
+            //if off make light target off or bright random
+        }
+    }
+}
+
+void Animations::setup_stardust() {
+
+}
+
+
+void Animations::setColorFromTarget(light *lamp) {
+    uint32_t r = (lamp->targetR - lamp->startR) * lamp->animI / lamp->endTick + lamp->startR;
+    uint32_t g = (lamp->targetG - lamp->startG) * lamp->animI / lamp->endTick + lamp->startG;
+    uint32_t b = (lamp->targetB - lamp->startB) * lamp->animI / lamp->endTick + lamp->startB;
+    uint32_t w = (lamp->targetW - lamp->startW) * lamp->animI / lamp->endTick + lamp->startW;
+    lamp->color = w << 24 | r << 16 | g << 8 | b;
+}

+ 7 - 2
src/Animations.h

@@ -25,13 +25,15 @@ public:
     //void createLookup();
 
     typedef void (Animations::*method_function)();
-    method_function animationPointer[3] = {&Animations::static_color, &Animations::rainbow, &Animations::randomColors};
-    method_function setupPointer[3] = {&Animations::setup_static_color, &Animations::setup_rainbow, &Animations::setup_randomColors};
+    method_function animationPointer[4] = {&Animations::static_color, &Animations::rainbow, &Animations::randomColors, &Animations::stardust};
+    method_function setupPointer[4] = {&Animations::setup_static_color, &Animations::setup_rainbow, &Animations::setup_randomColors, &Animations::setup_stardust};
 
     struct light *lights;
 
 
 private:
+    void setColorFromTarget(light *lamp);
+
     void rainbow();
     void setup_rainbow();
 
@@ -40,6 +42,9 @@ private:
 
     void randomColors();
     void setup_randomColors();
+
+    void stardust();
+    void setup_stardust();
 };
 
 

+ 3 - 0
src/LightCluster.h

@@ -19,6 +19,9 @@ private:
 public:
     int numLights;
     int animationNumber;
+    uint32_t maxBrightness;
+    bool useMaxBrightness;
+    uint8_t brightness = 255;
 
     bool runAnimation();
     void changeAnimation(int newAnimationNumber);

+ 2 - 2
src/WiFiPass.h

@@ -5,7 +5,7 @@
 #ifndef UNTITLED_WIFIPASS_H
 #define UNTITLED_WIFIPASS_H
 
-const char* ssid = "SSID HERE";
-const char* password = "PASSWORD HERE";
+const char* ssid = "Tallium 2.4";
+const char* password = "vgjsdsmhds";
 
 #endif //UNTITLED_WIFIPASS_H

+ 23 - 13
src/main.cpp

@@ -100,6 +100,13 @@ void setupServer() {
         for (int cluster = 0; cluster < numClusters; cluster++) { //    TODO: Send settings too
             json["clusters"][cluster]["numLights"] = clusters[cluster]->numLights;
             json["clusters"][cluster]["animation"] = clusters[cluster]->animationNumber;
+
+            json["clusters"][cluster]["animationSetting1"] = clusters[cluster]->animationObject->animationSetting1;
+            json["clusters"][cluster]["animationSetting2"] = clusters[cluster]->animationObject->animationSetting2;
+            json["clusters"][cluster]["animationSetting3"] = clusters[cluster]->animationObject->animationSetting3;
+            json["clusters"][cluster]["animationSetting4"] = clusters[cluster]->animationObject->animationSetting4;
+            json["clusters"][cluster]["delayTime"] = clusters[cluster]->animationObject->delayTimeMS;
+
             json["clusters"][cluster]["lights"] = DynamicJsonDocument(1024);
             for (int lamp = 0; lamp < clusters[cluster]->numLights; lamp++) {
                 json["clusters"][cluster]["lights"][lamp] = clusters[cluster]->lights[lamp].mapped;
@@ -168,19 +175,22 @@ void setupServer() {
         }
 
         int cluster = doc["targetCluster"];
-        long long value = doc["newValue"];
-        if (doc["setting"] == "delayTime") {
-            clusters[cluster]->animationObject->delayTimeMS = value;
-        } else if (doc["setting"] == "animationSetting1") {
-            clusters[cluster]->animationObject->animationSetting1 = value;
-        } else if (doc["setting"] == "animationSetting2") {
-            clusters[cluster]->animationObject->animationSetting2 = value;
-        } else if (doc["setting"] == "animationSetting3") {
-            clusters[cluster]->animationObject->animationSetting3 = value;
-        } else if (doc["setting"] == "animationSetting4") {
-            clusters[cluster]->animationObject->animationSetting4 = value;
-        } else if (doc["setting"] == "maxAnimationI") {
-            clusters[cluster]->animationObject->maxAnimationI = value;
+        if (cluster) {
+            long long value = doc["newValue"];
+            if (doc["setting"] == "delayTime") {
+                clusters[cluster]->animationObject->delayTimeMS = value;
+            } else if (doc["setting"] == "animationSetting1") {
+                clusters[cluster]->animationObject->animationSetting1 = value;
+            } else if (doc["setting"] == "animationSetting2") {
+                clusters[cluster]->animationObject->animationSetting2 = value;
+            } else if (doc["setting"] == "animationSetting3") {
+                clusters[cluster]->animationObject->animationSetting3 = value;
+            } else if (doc["setting"] == "animationSetting4") {
+                clusters[cluster]->animationObject->animationSetting4 = value;
+            } else if (doc["setting"] == "maxAnimationI") {
+                clusters[cluster]->animationObject->maxAnimationI = value;
+            }
+            extShow = true;
         }
 
         AsyncResponseStream *response = request->beginResponseStream("text/plain");