Hi, im trying to use the MAP function to gradually fade in-between colors. When I use this code it does the first fade, but then JUMPS back and does it over, without executing the second fade.
Any advice very appreciated, THANKS
#include "LPD8806.h"
#include "SPI.h"
// Example to control LPD8806-based RGB LED Modules in a strip
/*****************************************************************************/
// Number of RGB LEDs in strand:
int nLEDs = 4;
// Chose 2 pins for output; can be any valid output pins:
int dataPin = 11;
int clockPin = 13;
// Magenta:
#define COLOR1_R 0
#define COLOR1_G 0
#define COLOR1_B 255
// Blue:
#define COLOR2_R 255
#define COLOR2_G 0
#define COLOR2_B 0
// First parameter is the number of LEDs in the strand. The LED strips
// are 32 LEDs per meter but you can extend or cut the strip. Next two
// parameters are SPI data and clock pins:
LPD8806 strip = LPD8806(4, dataPin, clockPin);
// You can optionally use hardware SPI for faster writes, just leave out
// the data and clock pin parameters. But this does limit use to very
// specific pins on the Arduino. For "classic" Arduinos (Uno, Duemilanove,
// etc.), data = pin 11, clock = pin 13. For Arduino Mega, data = pin 51,
// clock = pin 52. For 32u4 Breakout Board+ and Teensy, data = pin B2,
// clock = pin B1. For Leonardo, this can ONLY be done on the ICSP pins.
//LPD8806 strip = LPD8806(nLEDs);
void setup() {
// Start up the LED strip
strip.begin();
// Update the strip, to start they are all 'off'
strip.show();
}
void loop() {
int r,g,b;
uint16_t i, j, k;
for (j=0; j < 140; j++) {
r = map(j, 0, 140, COLOR1_R, COLOR2_R);
g = map(j, 0, 140, COLOR1_G, COLOR2_G);
b = map(j, 0, 140, COLOR1_B, COLOR2_B);
for (i=0; i < 4; i++) {
strip.setPixelColor(i,(strip.Color(r,g,b) ));
}
strip.show(); // write all the pixels out
delay(50);
}
for (k=0; k < 140; j++) {
r = map(k, 0, 140, COLOR2_R, COLOR1_R);
g = map(k, 0, 140, COLOR2_G, COLOR1_G);
b = map(k, 0, 140, COLOR2_B, COLOR1_B);
for (i=0; i < 4; i++) {
strip.setPixelColor(i,(strip.Color(r,g,b) ));
}
strip.show(); // write all the pixels out
delay(100);
}
}