Are you saying you want it to act like the button is pressed once for each character that is received? Like this:
#include <FastSPI_LED.h>
#define NUM_LEDS 288
struct CRGB {
unsigned char r;
unsigned char g;
unsigned char b;
};
struct CRGB *leds;
const int SS_PIN = 4;
void setup() {
Serial.begin(115200);
FastSPI_LED.setLeds(NUM_LEDS);
FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801);
FastSPI_LED.setDataRate(3);
//FastSPI_LED.setChipset(CFastSPI_LED::SPI_LPD6803);
//FastSPI_LED.setChipset(CFastSPI_LED::SPI_HL1606);
//FastSPI_LED.setChipset(CFastSPI_LED::SPI_595);
//FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801);
FastSPI_LED.setPin(SS_PIN);
FastSPI_LED.init();
FastSPI_LED.start();
leds = (struct CRGB*)FastSPI_LED.getRGBData();
memset(leds, 0, NUM_LEDS * 3);
}
void loop() {
if (Serial.available()>=1) {
unsigned char value=Serial.read(); // Read a brightness value
leds[0].r = value;
leds[0].g = value;
leds[0].b = value;
}
// Move all the lights down one step
for(int i = NUM_LEDS-1; i > 0; i-- ) {
leds[i].r = leds[i-1].r;
leds[i].g = leds[i-1].g;
leds[i].b = leds[i-1].b;
}
leds[0].r /= 2;
leds[0].g /= 2;
leds[0].b /= 2;
FastSPI_LED.show();
delay(30);
}