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 Ned Konz

Files at this revision

API Documentation at this revision

Comitter:
heroic
Date:
Thu Apr 11 22:16:07 2013 +0000
Parent:
11:d127f93be182
Child:
13:1f65330abe92
Commit message:
Add function to write packed pixels via memcpy (about 150 usec faster)

Changed in this revision

LedStrip.h Show annotated file Show diff for this revision Revisions of this file
WS2811.cpp Show annotated file Show diff for this revision Revisions of this file
WS2811.h Show annotated file Show diff for this revision Revisions of this file
--- a/LedStrip.h	Wed Feb 20 03:38:25 2013 +0000
+++ b/LedStrip.h	Thu Apr 11 22:16:07 2013 +0000
@@ -18,6 +18,7 @@
   virtual void show(void)=0;
   virtual void blank(void)=0;
   virtual void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b)=0;
+  virtual void setPackedPixels(uint8_t * buffer, uint32_t n)=0;
   virtual void setPixelB(uint16_t n, uint8_t b)=0;
   virtual void setPixelG(uint16_t n, uint8_t g)=0;
   virtual void setPixelR(uint16_t n, uint8_t r)=0;
--- a/WS2811.cpp	Wed Feb 20 03:38:25 2013 +0000
+++ b/WS2811.cpp	Thu Apr 11 22:16:07 2013 +0000
@@ -133,6 +133,11 @@
     pixels[n*3+2] = b;
 }
 
+void WS2811::setPackedPixels(uint8_t * buffer, uint32_t n) {
+    if (n >= numLEDs) return;
+    memcpy(pixels, buffer, (size_t) (n*3));
+}
+
 void WS2811::setPixelColor(uint16_t n, uint32_t c) {
     if (n >= numLEDs) return; // '>=' because arrays are 0-indexed
 
--- a/WS2811.h	Wed Feb 20 03:38:25 2013 +0000
+++ b/WS2811.h	Thu Apr 11 22:16:07 2013 +0000
@@ -25,6 +25,7 @@
   virtual void show(void);
   virtual void blank(void);
   virtual void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b);
+  virtual void setPackedPixels(uint8_t * buffer, uint32_t n);
   virtual void setPixelB(uint16_t n, uint8_t b);
   virtual void setPixelG(uint16_t n, uint8_t g);
   virtual void setPixelR(uint16_t n, uint8_t r);