/* bouncing ball /* Kelvin Mead Aug/14 /* WS2811 / Fast_SPI2  */ <FastSPI_LED2.h> NUM_LEDS

/* bouncing ball
/* Kelvin Mead Aug/14
/* WS2811 / Fast_SPI2
*/

#include <FastSPI_LED2.h>

#define NUM_LEDS 320

CRGB leds[NUM_LEDS];

long previousMillis = 0; // will store last time LED was updated
long interval = 100; // interval at which to blink (milliseconds)
int bright = 255; // easy adjustable brightness
const int ledsperstrip = 32;

// for edge definition
int x = 0;
int y = 0;
int rowcount = 10;
int xdirection = 0;
int ydirection = 0;
int boxx = 10;
int boxy = 32;

void setup() {
delay(2000);
LEDS.setBrightness(bright);
LEDS.addLeds<WS2811, 13>(leds, NUM_LEDS);
}

void loop() {

unsigned long currentMillis = millis();

if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;

//put programs in here to be controlled by the delay time
// program name (r, g, b, speed)
bouncingball();

LEDS.setBrightness(bright);
} // end timed loop
} // end void loop

void bouncingball() {
if(xdirection == 0) {
boxx++;
if (boxx == 6) {
xdirection = 1;
boxx–;
}
}
if(xdirection == 1) {
boxx–;
if (boxx == 0) {
xdirection = 0;
}
}
if(ydirection == 0) {
boxy++;
if (boxy == 4) {
ydirection = 1;
boxy–;
}
}
if(ydirection == 1) {
boxy–;
if (boxy == 0) {
ydirection = 0;
}
}

if(boxy%2 == 1) { // row is odd

leds[(boxy * rowcount) + ((rowcount-1)-boxx)].setRGB(255,255,255);
} else { // row is even
leds[(boxy*rowcount) + boxx].setRGB(255,255,255);
}

FastSPI_LED.show();
}

Looks interesting – got a link to a video showing how it looks?

i can do tomorrow.
i have my led strips on rent tonight!