This is a library for the Adafruit LED Backpacks. This library works with the Adafruit Mini 8x8 and 16x8.

Dependents:   Adafruit_LEDBackpack_16x8_App Adafruit_32x8matrix

Fork of Adafruit_LEDBackpack by Luiz Hespanha

Revision:
3:b0ac557b5f0c
Parent:
2:529bad55777e
--- a/Adafruit_LEDBackpack.cpp	Thu Dec 15 17:31:22 2016 +0000
+++ b/Adafruit_LEDBackpack.cpp	Wed Dec 21 18:24:56 2016 +0000
@@ -25,6 +25,10 @@
 #include "mbed.h"
 #include "Adafruit_LEDBackpack.h"
 #include "Adafruit_GFX.h"
+#include "glcdfont.h"
+
+//mpl - something with stdio screwing things up.  need to define serial port to use for debug
+extern Serial pc;
 
 void Adafruit_LEDBackpack::setBrightness(uint8_t b) {
   if (b > 15) b = 15;
@@ -73,7 +77,7 @@
 }
 
 void Adafruit_LEDBackpack::clear(void) {
-  for (uint8_t i=0; i<8; i++) {
+  for (uint8_t i=0; i<16; i++) {
     displaybuffer[i] = 0;
   }
 }
@@ -111,6 +115,8 @@
   } else {
     displaybuffer[y] &= ~(1 << x);
   }
+  
+
 }
 
 
@@ -120,8 +126,8 @@
 void Adafruit_16x8matrix::drawPixel(int16_t x, int16_t y, uint16_t color) {
   if ((y < 0) || (y >= 8)) return;
   if ((x < 0) || (x >= 16)) return;
-
- // check rotation, move pixel around if necessary
+  
+ // check rotation, move pixel around if necessary 
   switch (getRotation()) {
   case 1:
     swap(x, y);
@@ -138,7 +144,7 @@
   }
 
   // wrap around the x
-  x += 15;
+  x += 16;
   x %= 16;
 
 
@@ -147,4 +153,98 @@
   } else {
     displaybuffer[y] &= ~(1 << x);
   }
+}
+
+size_t Adafruit_16x8matrix::writeChar(uint8_t c)
+{
+        
+    if (c == '\n')
+    {
+        cursor_y += textsize*8;
+        cursor_x = 0;
+    }
+    else if (c == '\r')
+        cursor_x = 0;
+    else
+    {
+        drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize);
+        cursor_x += textsize*6;
+       // if (wrap && (cursor_x > (_width - textsize*6)))
+       // {
+       //     cursor_y += textsize*8;
+       //     cursor_x = 0;
+        //}
+    }
+    return 1;
+}
+
+void Adafruit_16x8matrix::scrollChar(uint8_t c)
+{
+        
+    if (c == '\n')
+    {
+        cursor_y += textsize*8;
+        cursor_x = 0;
+    }
+    else if (c == '\r')
+        cursor_x = 0;
+    else
+    {
+        for(int i = 0; i < 16; i++)
+        {
+            drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize);
+            writeDisplay();
+            Thread::wait(100);
+            clear();
+            writeDisplay();
+            cursor_x++;
+        }    
+    }
+}
+
+// draw a character
+void Adafruit_16x8matrix::drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size)
+{
+  
+//allow clipping   
+//    if(
+//        (x >= _width) || // Clip right
+//        (y >= _height) || // Clip bottom
+//        ((x + 5 * size - 1) < 0) || // Clip left
+//        ((y + 8 * size - 1) < 0) // Clip top
+//        )
+//        return;
+    
+    for (int8_t i=0; i<6; i++ )
+    {
+        uint8_t line = 0;
+
+        if (i == 5) 
+            line = 0x0;
+        else 
+            line = font[(c*5)+i];
+            
+        for (int8_t j = 0; j<8; j++)
+        {
+            if (line & 0x1)
+            {
+                if (size == 1) // default size
+                    drawPixel(x+i, y+j, color);
+#ifdef WANT_ABSTRACTS
+                else // big size
+                    fillRect(x+(i*size), y+(j*size), size, size, color);
+#endif                    
+            }
+            else if (bg != color)
+            {
+                if (size == 1) // default size
+                    drawPixel(x+i, y+j, bg);
+#ifdef WANT_ABSTRACTS
+                else // big size
+                    fillRect(x+i*size, y+j*size, size, size, bg);
+#endif
+            }
+            line >>= 1;
+        }
+    }
 }
\ No newline at end of file