diff --git a/BlinkenLights.ino b/BlinkenLights.ino index f0451e2d350065abae4e4e720afa7b67da956b82..d2d56b97d43e4ccd253074cd48a5bb6af1390674 100644 --- a/BlinkenLights.ino +++ b/BlinkenLights.ino @@ -298,7 +298,7 @@ void colourWipe(uint32_t c, uint8_t wait) { strip.show(); delay(wait); position++; - if (position > STRIPLENGTH) { + if (position >= STRIPLENGTH) { position = 256; } } @@ -308,12 +308,16 @@ void colourWipe(uint32_t c, uint8_t wait) { * @param wait delay between colour changes */ void rainbow(uint8_t wait) { - for(int i = 0; i <strip.numPixels(); i++) { + int outOf = 256; + for (int i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+position) & 255)); } strip.show(); delay(wait); position++; + if (position > outOf) { + position = 0; + } } /** @@ -321,15 +325,16 @@ void rainbow(uint8_t wait) { * @param wait delay between colour changes */ void rainbowCycle(uint8_t wait) { - uint16_t j; - for(int j = 0; j < 256 * 5; j++) { // 5 cycles of all colours on wheel - strip.setPixelColor(position, Wheel(((position * 256 / strip.numPixels()) + j) & 255)); + int outOf = 256 * 5; + uint16_t i; + for(i=0; i< strip.numPixels(); i++) { + strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + position) & 255)); } strip.show(); delay(wait); position++; - if (position > STRIPLENGTH) { - position = 256; + if (position >= outOf) { + position = 0; } } @@ -340,20 +345,21 @@ void rainbowCycle(uint8_t wait) { */ void theaterChase(uint32_t c, uint8_t wait) { ///TODO: stop this blocking. Somehow - for (int j=0; j<10; j++) { // do 10 cycles of chasing - for (int q=0; q < 3; q++) { - for (int i=0; i < strip.numPixels(); i=i+3) { - strip.setPixelColor(i+q, c); // turn every third pixel on - } - strip.show(); - - delay(wait); - - for (int i=0; i < strip.numPixels(); i=i+3) { - strip.setPixelColor(i+q, 0); // turn every third pixel off - } + int outOf = 10; + for (int q=0; q < 3; q++) { + for (int i=0; i < strip.numPixels(); i=i+3) { + strip.setPixelColor(i+q, c); // turn every third pixel on + } + strip.show(); + delay(wait); + for (int i=0; i < strip.numPixels(); i=i+3) { + strip.setPixelColor(i+q, 0); // turn every third pixel off } } + position++; + if (position >= outOf) { + position = 0; + } } /** @@ -362,20 +368,24 @@ void theaterChase(uint32_t c, uint8_t wait) { */ void theaterChaseRainbow(uint8_t wait) { ///TODO: stop this blocking. Somehow - for (int j=0; j < 256; j++) { // cycle all 256 colours in the wheel - for (int q=0; q < 3; q++) { - for (int i=0; i < strip.numPixels(); i=i+3) { - // turn every third pixel on - strip.setPixelColor(i+q, Wheel( (i+j) % 255)); - } - strip.show(); - - delay(wait); - - for (int i=0; i < strip.numPixels(); i=i+3) { - strip.setPixelColor(i+q, 0); // turn every third pixel off - } - } + int outOf = 256; + for (int q=0; q < 3; q++) { + for (int i=0; i < strip.numPixels(); i=i+3) { + // turn every third pixel on + strip.setPixelColor(i+q, Wheel( (i+position) % 255)); + } + strip.show(); + + delay(wait); + + for (int i=0; i < strip.numPixels(); i=i+3) { + strip.setPixelColor(i+q, 0); // turn every third pixel off + } + } + + position++; + if (position >= outOf) { + position = 0; } } @@ -402,8 +412,12 @@ uint32_t Wheel(byte WheelPos) { ///TODO: Comment this stuff void setup() { + Serial.begin(9600); + while(!Serial); + Serial.println("Starting Ethernet"); // Start Ethernet Ethernet.begin(mac, ip); + Serial.println("Ethernet Started"); // Set up webpages webserver.setDefaultCommand(&webSetSequence); webserver.addCommand("custom", &webSetSequence); @@ -430,29 +444,38 @@ void loop() char buff[64]; int len = 64; webserver.processConnection(buff, &len); - if (position > 255) { - position = position % 256; - if (lightOption != 0) { - lightOption++; - } - } if (lightOption > NUMSEQUENCES) { - lightOption = 1; + //lightOption = 1; } + // Run our light sequence after checking for we requests ///TODO: Make these switches nicer switch (lightOption) { case 0: // Don't change the lights at all + lightOption = 2; break; case 1: // Wipe the LED's to Red - colourWipe(strip.Color(red, green, blue), 50); // Red + colourWipe(strip.Color(red, green, blue), 50); + Serial.println("ColourWipe"); break; case 2: - + rainbow(20); + Serial.println("Rainbow"); + break; + case 3: + rainbowCycle(20); + Serial.println("RainbowCycle"); + break; + case 4: + theaterChaseRainbow(20); + Serial.println("TheaterChaseRainbow"); + break; default: lightOption = 1; break; } // Show our lights - updateLights(); + if (position == 0) { // if we have completed a sequence, move to the next one + lightOption++; + } }