From e64ce4e263f725e54c6e73ee44862068cbdfc315 Mon Sep 17 00:00:00 2001 From: espenbfo Date: Sun, 6 Dec 2020 14:49:58 +0100 Subject: [PATCH 1/8] Merged in fancylights and quicksort --- src/main.cpp | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 167 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6e9f8ea..e23cd73 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,6 +25,8 @@ const char* password = STAPSK; uint8_t rgb[3] = {122,122,122}; uint8_t wave = 0; int mode = 0; +int o1 = 0; //Option 1 +int o2 = 0; //Option 2 ESP8266WebServer server(80); @@ -38,6 +40,11 @@ const String postForms = "\ \ \ \ +

POST form data to mode


\ +
\ +
\ + \ +
\

POST plain text to r


\
\
\ @@ -53,9 +60,14 @@ const String postForms = "\
\ \
\ -

POST form data to mode


\ -
\ -
\ +

POST option 1


\ + \ +
\ + \ +
\ +

POST option 2


\ +
\ +
\ \
\ \ @@ -101,6 +113,42 @@ void handleG() { } +void handleOption1() { + if (server.method() != HTTP_POST) { + digitalWrite(led, 1); + server.send(405, "text/plain", "Method Not Allowed"); + digitalWrite(led, 0); + } else { + digitalWrite(led, 1); + String temp = server.arg("plain"); + temp.remove(0,3); + o1 = temp.toInt(); + Serial.println(o1); + Serial.println(temp); + digitalWrite(led, 0); + } + server.send(200, "text/html", postForms); + +} + +void handleOption2() { + if (server.method() != HTTP_POST) { + digitalWrite(led, 1); + server.send(405, "text/plain", "Method Not Allowed"); + digitalWrite(led, 0); + } else { + digitalWrite(led, 1); + String temp = server.arg("plain"); + temp.remove(0,3); + o2 = temp.toInt(); + Serial.println(o2); + Serial.println(temp); + digitalWrite(led, 0); + } + server.send(200, "text/html", postForms); + +} + void handleB() { if (server.method() != HTTP_POST) { digitalWrite(led, 1); @@ -180,6 +228,10 @@ void setup(void) { server.on("/b/", handleB); + server.on("/o1/", handleOption1); + + server.on("/o2/", handleOption2); + server.on("/mode/",handleMode); @@ -189,6 +241,81 @@ void setup(void) { Serial.println("HTTP server started"); } + +int partition(int arr[],int low,int high) { + int pivot = arr[high]; + int small = low; + for (int i = low; i < high; i++) { + if (arr[i] lim) ? 1.:0.; +} +double right_light_pulse(double x,double t) { + double combined = smod(x*30,1.)+t*5; + combined = fabs(1.-2.*smod(combined,1.)); + return combined*combined; +} + +double empty_light_pulse(double x, double t) { + return 0.; +} + +double left_light_pulse(double x, double t) { + double combined = (smod(x*30,1.)-t*5); + combined = fabs(1.-2.*smod(combined,1.)); + return combined*combined; +} + void loop(void) { if(mode == 0){ pixels.clear(); // Set all pixel colors to 'off' @@ -354,6 +481,43 @@ void loop(void) { delay(1000); server.handleClient(); } + }else if(mode == 7) { + double (*r)(double, double); + double (*g)(double, double); + double (*b)(double, double); + r= &empty_light_pulse; + g = &empty_light_pulse; + b = &empty_light_pulse; + if (o1 == 0) { + r = &right_light_pulse; + } else if (o1 == 1) { + g = &right_light_pulse; + } else if (o1 == 2) { + b = &right_light_pulse; + } + if (o2 == 0) { + r = &left_light_pulse; + } else if (o2 == 1) { + g = &left_light_pulse; + } else if (o2 == 2) { + b = &left_light_pulse; + } + shadertoy(r,g,b); + }else if(mode == 8) { + int list_length = 300;//rgb[0]; + + int *arr = new int[list_length]; + + for (int i = 0; i < list_length; i++) { + arr[i] = random(65536); + pixels.setPixelColor(i,pixels.ColorHSV(arr[i])); + pixels.show(); + server.handleClient(); + } + + + quicksort(arr,0,list_length-1); + server.handleClient(); }else{ // The first NeoPixel in a strand is #0, second is 1, all the way up // to the count of pixels minus one. From fc46edfaf65b1f15294b09c835115caa756ddd6e Mon Sep 17 00:00:00 2001 From: Espen Boman Fosseide Date: Sun, 6 Dec 2020 15:17:05 +0100 Subject: [PATCH 2/8] Update main.cpp add more css --- src/main.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e23cd73..4a6a63e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -36,40 +36,84 @@ const String postForms = "\ \ ESP8266 Web Server POST handling\ \ +\ \ \ -

POST form data to mode


\ -
\ -
\ - \ -
\ -

POST plain text to r


\ +
\ +
\ + LEDstrip controller\ +
\ +
\ +

mode


\ +
\ +
\ + \ +
\ +
\ +
\ +

RGB


\
\ -
\ +
\ \
\ -

POST form data to g


\
\
\ \
\ -

POST form data to b


\
\
\ \
\ -

POST option 1


\ +
\ +
\ +

Optional parameters


\
\
\ \
\ -

POST option 2


\
\
\ \ -
\ +
\ \ "; From 7c50ecb6e58a00cdf6bde68c88f1bd912d79fe31 Mon Sep 17 00:00:00 2001 From: Espen Boman Fosseide Date: Sun, 6 Dec 2020 15:41:04 +0100 Subject: [PATCH 3/8] Update main.cpp combine r, g & b to one form --- src/main.cpp | 57 ++++++++-------------------------------------------- 1 file changed, 8 insertions(+), 49 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 4a6a63e..0ebf7cf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -91,16 +91,10 @@ const String postForms = "\ \
\

RGB


\ -
\ -
\ - \ -
\ -
\ -
\ - \ -
\ -
\ -
\ + \ +

\ +

\ +

\ \
\
\ @@ -123,15 +117,16 @@ void handleRoot() { digitalWrite(led, 0); } -void handleR() { +void handleRGB() { if (server.method() != HTTP_POST) { digitalWrite(led, 1); server.send(405, "text/plain", "Method Not Allowed"); digitalWrite(led, 0); } else { String temp = server.arg("plain"); - temp.remove(0,2); - rgb[0] = temp.toInt(); + rgb[0] = temp[2]; + rgb[0] = temp[6]; + rgb[0] = temp[10]; Serial.println(rgb[0]); Serial.println(temp); digitalWrite(led, 0); @@ -139,24 +134,6 @@ void handleR() { server.send(200, "text/html", postForms); } -void handleG() { - if (server.method() != HTTP_POST) { - digitalWrite(led, 1); - server.send(405, "text/plain", "Method Not Allowed"); - digitalWrite(led, 0); - } else { - digitalWrite(led, 1); - String temp = server.arg("plain"); - temp.remove(0,2); - rgb[1] = temp.toInt(); - Serial.println(rgb[1]); - Serial.println(temp); - digitalWrite(led, 0); - } - server.send(200, "text/html", postForms); - -} - void handleOption1() { if (server.method() != HTTP_POST) { digitalWrite(led, 1); @@ -193,24 +170,6 @@ void handleOption2() { } -void handleB() { - if (server.method() != HTTP_POST) { - digitalWrite(led, 1); - server.send(405, "text/plain", "Method Not Allowed"); - digitalWrite(led, 0); - } else { - digitalWrite(led, 1); - String temp = server.arg("plain"); - temp.remove(0,2); - rgb[2] = temp.toInt(); - Serial.println(rgb[2]); - Serial.println(temp); - digitalWrite(led, 0); - } - server.send(200, "text/html", postForms); - -} - void handleMode(){ if (server.method() != HTTP_POST) { digitalWrite(led, 1); From 669bd691fc6906634e61cd496d138015d3c86f70 Mon Sep 17 00:00:00 2001 From: Espen Boman Fosseide Date: Sun, 6 Dec 2020 16:03:37 +0100 Subject: [PATCH 4/8] Update main.cpp rework rgb handler --- src/main.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 0ebf7cf..2ef407d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -124,9 +124,18 @@ void handleRGB() { digitalWrite(led, 0); } else { String temp = server.arg("plain"); - rgb[0] = temp[2]; - rgb[0] = temp[6]; - rgb[0] = temp[10]; + index = 0; + while (true) { + int amp = temp.indexOf("&"); + int equals = temp.indexOf("="); + if (amp != -1) { + rgb[index] = temp.toInt(temp.substring(equals,amp)); + } else { + rgb[index] = temp.toInt(temp.substring(equals)); + break + } + index++; + } Serial.println(rgb[0]); Serial.println(temp); digitalWrite(led, 0); @@ -225,11 +234,7 @@ void setup(void) { server.on("/", handleRoot); - server.on("/r/", handleR); - - server.on("/g/", handleG); - - server.on("/b/", handleB); + server.on("/rgb/", handleRGB); server.on("/o1/", handleOption1); From f88c3440f3c8ec4b71c46a502fd8784132bc4002 Mon Sep 17 00:00:00 2001 From: espenbfo Date: Sun, 6 Dec 2020 16:17:43 +0100 Subject: [PATCH 5/8] Update main.cpp fix bugs with rgb posting --- src/main.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2ef407d..48e9264 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -124,15 +124,16 @@ void handleRGB() { digitalWrite(led, 0); } else { String temp = server.arg("plain"); - index = 0; + int index = 0; while (true) { int amp = temp.indexOf("&"); - int equals = temp.indexOf("="); + int es = temp.indexOf("="); if (amp != -1) { - rgb[index] = temp.toInt(temp.substring(equals,amp)); + rgb[index] = temp.substring(es+1,amp).toInt(); + temp.remove(0,amp+1); } else { - rgb[index] = temp.toInt(temp.substring(equals)); - break + rgb[index] = temp.substring(es+1).toInt(); + break; } index++; } From c893bb3a8f735128b4bac389cbdc3d664a60a6fc Mon Sep 17 00:00:00 2001 From: Espen Boman Fosseide Date: Sun, 6 Dec 2020 17:08:08 +0100 Subject: [PATCH 6/8] Update main.cpp add mode options in website --- src/main.cpp | 48 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2ef407d..e2f6d2c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,12 +27,13 @@ uint8_t wave = 0; int mode = 0; int o1 = 0; //Option 1 int o2 = 0; //Option 2 +String modenames[] = {"default", "random", "simple wave", "sort0","sort1","sort2","dual mulitwave","quicksort"}; ESP8266WebServer server(80); const int led = LED_BUILTIN; -const String postForms = "\ +String postFirstHalf = "\ \ ESP8266 Web Server POST handling\ \ \ \ @@ -83,13 +93,21 @@ const String postForms = "\ LEDstrip controller\ \
\ -

mode


\ -
\ -
\ + mode
\ +
\ + \ +
\ \
\
\ -
\ +
\ +
\ +

modes


"; + +String postSecondHalf = " +
\ +\ +
\

RGB


\
\

\ @@ -97,8 +115,8 @@ const String postForms = "\

\ \
\ -
\ -
\ +
\ +
\

Optional parameters


\
\
\ @@ -108,8 +126,15 @@ const String postForms = "\
\ \
\ + \ \ -"; +"\ +String postForms = ""; void handleRoot() { digitalWrite(led, 1); @@ -210,6 +235,11 @@ void handleNotFound() { } void setup(void) { + String buttons = ""; + for (int = 0; i"+modenames[i] + "
"; + } + postForms = postFirstHalf + buttons + postSecondHalf; pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) pinMode(led, OUTPUT); digitalWrite(led, 0); From 91083d5527a598bcf7f9e1b14dba956393891c46 Mon Sep 17 00:00:00 2001 From: espenbfo Date: Sun, 6 Dec 2020 17:35:52 +0100 Subject: [PATCH 7/8] Update main.cpp fix mode buttons --- src/main.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 6fda6f0..0174c9b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,7 @@ uint8_t wave = 0; int mode = 0; int o1 = 0; //Option 1 int o2 = 0; //Option 2 -String modenames[] = {"default", "random", "simple wave", "sort0","sort1","sort2","dual mulitwave","quicksort"}; +String modenames[] = {"default", "random", "simple wave", "Multiwave", "insertionsort","bubblesort", "stalinsort","dual mulitwave with options","quicksort"}; ESP8266WebServer server(80); @@ -104,7 +104,7 @@ String postFirstHalf = "\
\

modes


"; -String postSecondHalf = " +String postSecondHalf = "\ \ \
\ @@ -133,7 +133,7 @@ String postSecondHalf = " }\ \ \ -"\ +"; String postForms = ""; void handleRoot() { @@ -237,8 +237,8 @@ void handleNotFound() { void setup(void) { String buttons = ""; - for (int = 0; i"+modenames[i] + "
"; + for (int i = 0; i"+modenames[i] + "
"; } postForms = postFirstHalf + buttons + postSecondHalf; pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) From 2b2e73147221caa2ea307ff44f051b93e2a99c24 Mon Sep 17 00:00:00 2001 From: Espen Boman Fosseide <55250882+Espenbfo@users.noreply.github.com> Date: Wed, 27 Jan 2021 13:14:31 +0100 Subject: [PATCH 8/8] Update main.cpp fix quicksort returning int --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 0174c9b..4ea1a2b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -307,7 +307,7 @@ int partition(int arr[],int low,int high) { } -int quicksort(int arr[], int low, int high) { +void quicksort(int arr[], int low, int high) { if (low