Simple 8x8 LED Matrix controller which interfaces with a Processing GUI over serial to display sketches
Dependencies: Multi_WS2811 mbed
Fork of Multi_WS2811_test by
Diff: main.cpp
- Revision:
- 23:33df42ff2541
- Parent:
- 22:abfed71656bd
- Child:
- 24:feb1dae0403a
diff -r abfed71656bd -r 33df42ff2541 main.cpp --- a/main.cpp Thu Jan 02 02:31:24 2014 +0000 +++ b/main.cpp Thu Jan 02 10:30:25 2014 +0000 @@ -2,8 +2,8 @@ #include "WS2811.h" #include "Colors.h" -// per LED: 3x 20 mA = 60mA -// 4x full brightness = 0.33A at 5V. +// per LED: 3 * 20 mA = 60mA max +// 60 LEDs: 60 * 60mA = 3600 mA max unsigned const nLEDs = MAX_LEDS_PER_STRIP; // I/O pin usage @@ -33,42 +33,31 @@ strip.show(); } -static void showTestPattern(WS2811 &strip) -{ - unsigned nLEDs = strip.numPixels(); - for (unsigned i = 0; i < nLEDs; i++) - { - strip.setPixelColor(i, LedStrip::Color(0xff,0,0xAA)); - } - strip.show(); -} - int main(void) { pc.baud(115200); - pc.printf("\r\nLEDs: %d\r\n", nLEDs); - WS2811 lightStrip(nLEDs, DATA_OUT_PIN); lightStrip.begin(); - float sat = 1.0; // color saturation, 0.0 to 1.0 - float brite = 0.1; // 1.0 is full brightness, which is VERY bright! - float hueShift = 0.0; - float hueShiftIncrement = 1.0 / (360.0 / nLEDs); + float brite = 0.2; // 1.0 is full brightness, which is VERY bright! + float rainbowPeriod = 1 * 1.0e6; // usec + float sat = 1.0; - Timer advance; - advance.start(); + Timer timeRunning; + timeRunning.start(); + bool printed = false; + unsigned frames = 0; for (;;) { - advance.reset(); - - // showTestPattern(lightStrip); + unsigned running = timeRunning.read_us(); + float hueShift = running / rainbowPeriod; + if (!printed && running >= 10000000U) { + pc.printf("%u frames in %u usec = %u frames / sec\r\n", frames, running, frames * 1000000 / running); + printed = true; + } showRainbow(lightStrip, sat, brite, hueShift); - hueShift += hueShiftIncrement; - - while (advance.read_ms() < 100) - __NOP(); - } + frames ++; + } }