From 618ae24677b4a766341d9beccb9b37ad50c911c9 Mon Sep 17 00:00:00 2001 From: Mitchell Pomery <bob_george33@hotmail.com> Date: Fri, 7 Mar 2014 22:32:17 +0800 Subject: [PATCH] webGetArray Returns ALL the lights! --- BlinkenLights.ino | 99 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 76 insertions(+), 23 deletions(-) diff --git a/BlinkenLights.ino b/BlinkenLights.ino index 40df915..d250f2b 100644 --- a/BlinkenLights.ino +++ b/BlinkenLights.ino @@ -64,15 +64,13 @@ NEO_GRB + NEO_KHZ800); // Set up our webserver WebServer webserver(PREFIX, 80); - - // =========================== char-hex conversions =========================== char* charToHex(char c) { char base_digits[16] = - { + { '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; int converted_number[64]; int base = 16; @@ -86,25 +84,39 @@ char* charToHex(char c) { number_to_convert = number_to_convert / base; index++; } - Serial.println(index); + //Serial.println(index); /* now print the result in reverse order */ - index--; /* back up to last entry in the array */ - + index--; /* back up to last entry in the array */ + + char ret[3]; + + //ret[0] = ''; + //ret[1] = ''; + + int i = 0; + if (index < 0) { - Serial.print(base_digits[0]); + ret[i] = base_digits[0]; + i++; } if (index < 1) { - Serial.print(base_digits[0]); + ret[i] = base_digits[0]; + i++; } - for(; index>=0; index--) /* go backward through array */ + for(; index >= 0 && i < 2; index--) // go backward through array { - Serial.print(base_digits[converted_number[index]]); + ret[i] = base_digits[converted_number[index]]; + i++; } - return (char) 0; + + ret[2] = '\0'; + Serial.print(ret); // NEVER REMOVE THIS LINE. OR DIE + // WITHOUT IT WE GET GARBLED OUTPUT HERE + // YOU HAVE BEEN WARNED + return ret; } - // ============================ LIGHT MANIPULATION ============================ /** @@ -178,7 +190,13 @@ void setLED(int xpos, int ypos, int red, int green, int blue) { * @return colour of LED at pos */ struct led getLED(int pos) { - return ledArray[pos]; + uint32_t light = strip.getPixelColor(pos); + //Serial.print(light); + led ret; + ret.red = light >> 16; + ret.green = light >> 8; + ret.blue = light; + return ret; } /** @@ -189,7 +207,7 @@ struct led getLED(int pos) { */ struct led getLED(int xpos, int ypos) { int pos = coordToPos(xpos, ypos); - return ledArray[pos]; + return getLED(pos); } // ================================ WEB PAGES ================================ @@ -234,6 +252,39 @@ char *url_tail, bool tail_complete) { } } +void webGetArray(WebServer &server, WebServer::ConnectionType type, +char *url_tail, bool tail_complete) { + URLPARAM_RESULT rc; + char name[NAMELEN]; + char value[VALUELEN]; + + server.httpSuccess(); + // Kill the connection before doing anything if all they want is head + if (type == WebServer::HEAD) { + return; + } + else if (type == WebServer::GET) { + for (int i = 0; i < WIDTH; i++) { + for (int j = 0; j < HEIGHT; j++) { + led light = getLED(i, j); + //Serial.print(i); + //Serial.print(", "); + //Serial.println(j); + server.print(charToHex(light.red)); + //Serial.print(light.red); + server.print(charToHex(light.green)); + //Serial.print(light.green); + server.print(charToHex(light.blue)); + //Serial.println(light.blue); + } + } + //server.print(array); + } + else { + server.print("Unknown Request"); + } +} + /** * Set a specific LED to a specific colour * @param server @@ -463,6 +514,7 @@ void setup() { webserver.addCommand("custom", &webSetSequence); //webserver.addCommand("individual", &webSetLED); webserver.addCommand("brightness", &webSetBrightness); + webserver.addCommand("get", &webGetArray); // Start Webserver webserver.begin(); // Turn our lights on @@ -472,14 +524,14 @@ void setup() { ledArray[i].blue = (char) 128; } - for (int i = -128; i < 128; i++) { - Serial.print(i); - Serial.print(" "); - //Serial.print((char) i); - Serial.print(" "); - charToHex((char) i); - Serial.println(""); - } + /*for (int i = -128; i < 128; i++) { + Serial.print(i); + Serial.print(" "); + //Serial.print((char) i); + Serial.print(" "); + charToHex((char) i); + Serial.println(""); + }*/ // Start Lights strip.begin(); @@ -530,3 +582,4 @@ void loop() } } + -- GitLab