Example application for two 16x8 Adafruit LED Backpacks to make a 32 x 8 matrix.

Dependencies:   Adafruit_32x8matrix

Fork of Adafruit_LEDBackpack_16x8_App by Mac Lobdell

/media/uploads/maclobdell/austin_iot_lab.jpg

This project uses two 16x8 1.2" LED Matrix + Backpacks stuck together to make a 32x8 double-length matrix.

Committer:
maclobdell
Date:
Wed Dec 21 18:25:03 2016 +0000
Revision:
1:dd1d1b64b9a5
Parent:
0:2eec8a9428ea
Child:
2:ffe5cf2557e3
initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
maclobdell 0:2eec8a9428ea 1 #include "mbed.h"
maclobdell 0:2eec8a9428ea 2 #include "Adafruit_LEDBackpack.h"
maclobdell 0:2eec8a9428ea 3 #include "Adafruit_GFX.h"
maclobdell 0:2eec8a9428ea 4
maclobdell 0:2eec8a9428ea 5 I2C i2c(D14, D15);
maclobdell 1:dd1d1b64b9a5 6
maclobdell 1:dd1d1b64b9a5 7 //mpl - something with stdio screwing things up. need to define serial port to use for debug
maclobdell 1:dd1d1b64b9a5 8 Serial pc (USBTX,USBRX);
maclobdell 1:dd1d1b64b9a5 9
maclobdell 0:2eec8a9428ea 10 Adafruit_16x8matrix matrix = Adafruit_16x8matrix(&i2c);
maclobdell 1:dd1d1b64b9a5 11 Adafruit_16x8matrix matrix2 = Adafruit_16x8matrix(&i2c);
maclobdell 1:dd1d1b64b9a5 12
maclobdell 1:dd1d1b64b9a5 13 void scrollText(char * buffer, uint8_t buf_len);
maclobdell 1:dd1d1b64b9a5 14
maclobdell 0:2eec8a9428ea 15 int main() {
maclobdell 1:dd1d1b64b9a5 16
maclobdell 1:dd1d1b64b9a5 17 /* matrix[0].begin(0x70);
maclobdell 1:dd1d1b64b9a5 18 //while(1)
maclobdell 1:dd1d1b64b9a5 19 // {
maclobdell 1:dd1d1b64b9a5 20 matrix[0].clear();
maclobdell 0:2eec8a9428ea 21 for (int i = 0; i < 16; i++) {
maclobdell 1:dd1d1b64b9a5 22 for (int j = 0; j < 8; j++) {
maclobdell 0:2eec8a9428ea 23 matrix.drawPixel(i, j, LED_ON);
maclobdell 0:2eec8a9428ea 24 matrix.writeDisplay(); // write the changes we just made to the display
maclobdell 1:dd1d1b64b9a5 25 Thread::wait(10);
maclobdell 1:dd1d1b64b9a5 26 }
maclobdell 1:dd1d1b64b9a5 27 }
maclobdell 1:dd1d1b64b9a5 28
maclobdell 1:dd1d1b64b9a5 29 matrix2.begin(0x71);
maclobdell 1:dd1d1b64b9a5 30 matrix2.clear();
maclobdell 1:dd1d1b64b9a5 31
maclobdell 1:dd1d1b64b9a5 32 for (int i = 0; i < 16; i++) {
maclobdell 1:dd1d1b64b9a5 33 for (int j = 0; j < 8; j++) {
maclobdell 1:dd1d1b64b9a5 34 matrix2.drawPixel(i, j, LED_ON);
maclobdell 1:dd1d1b64b9a5 35 matrix2.writeDisplay(); // write the changes we just made to the display
maclobdell 1:dd1d1b64b9a5 36 Thread::wait(10);
maclobdell 0:2eec8a9428ea 37 }
maclobdell 0:2eec8a9428ea 38 }
maclobdell 1:dd1d1b64b9a5 39
maclobdell 1:dd1d1b64b9a5 40 */
maclobdell 1:dd1d1b64b9a5 41 matrix2.begin(0x71);
maclobdell 1:dd1d1b64b9a5 42 matrix2.clear();
maclobdell 1:dd1d1b64b9a5 43 matrix2.writeDisplay();
maclobdell 1:dd1d1b64b9a5 44 // matrix2.writeChar('A');
maclobdell 1:dd1d1b64b9a5 45 // matrix2.writeDisplay();
maclobdell 1:dd1d1b64b9a5 46 // Thread::wait(10);
maclobdell 1:dd1d1b64b9a5 47
maclobdell 1:dd1d1b64b9a5 48 matrix.begin(0x70);
maclobdell 1:dd1d1b64b9a5 49 matrix.clear();
maclobdell 1:dd1d1b64b9a5 50 matrix.writeDisplay();
maclobdell 1:dd1d1b64b9a5 51 // matrix.writeChar('A');
maclobdell 1:dd1d1b64b9a5 52 // matrix.writeChar('B');
maclobdell 1:dd1d1b64b9a5 53 // matrix.writeChar('C');
maclobdell 1:dd1d1b64b9a5 54 // matrix.writeDisplay();
maclobdell 1:dd1d1b64b9a5 55
maclobdell 1:dd1d1b64b9a5 56 char buffer [50];
maclobdell 1:dd1d1b64b9a5 57 sprintf (buffer, "Hello\0");
maclobdell 1:dd1d1b64b9a5 58 scrollText(buffer,strlen(buffer));
maclobdell 1:dd1d1b64b9a5 59
maclobdell 1:dd1d1b64b9a5 60 // }
maclobdell 1:dd1d1b64b9a5 61 }
maclobdell 1:dd1d1b64b9a5 62
maclobdell 1:dd1d1b64b9a5 63 void scrollText(char * buffer, uint8_t buf_len)
maclobdell 1:dd1d1b64b9a5 64 {
maclobdell 1:dd1d1b64b9a5 65 uint8_t x_pos;
maclobdell 1:dd1d1b64b9a5 66 uint8_t m;
maclobdell 1:dd1d1b64b9a5 67 char c;
maclobdell 1:dd1d1b64b9a5 68
maclobdell 1:dd1d1b64b9a5 69 //pc.printf("buffer = %s, len = %d\r\n", buffer, buf_len);
maclobdell 1:dd1d1b64b9a5 70
maclobdell 1:dd1d1b64b9a5 71 //Need to start at the end and draw backwards, each time scrolling one pixel to the right
maclobdell 1:dd1d1b64b9a5 72 // then, stop when get to first character.
maclobdell 1:dd1d1b64b9a5 73 //find example
maclobdell 1:dd1d1b64b9a5 74
maclobdell 1:dd1d1b64b9a5 75 /* code inspired by LOLShield library */
maclobdell 1:dd1d1b64b9a5 76 int xoff=31;/* set offset to the right end of the screen*/
maclobdell 1:dd1d1b64b9a5 77 for(int i=0; i<buf_len*5 +52; i++){ /*scrolling loop*/
maclobdell 1:dd1d1b64b9a5 78 for(int j=0; j<buf_len; j++){ /*loop over all of the chars in the text*/
maclobdell 1:dd1d1b64b9a5 79 if(xoff + j*6 <32)
maclobdell 1:dd1d1b64b9a5 80 {
maclobdell 1:dd1d1b64b9a5 81 matrix.drawChar(xoff + j*6, 0, buffer[j], 1, 0, 1);
maclobdell 1:dd1d1b64b9a5 82 matrix.writeDisplay();
maclobdell 1:dd1d1b64b9a5 83 }else
maclobdell 1:dd1d1b64b9a5 84 {
maclobdell 1:dd1d1b64b9a5 85 matrix2.drawChar(xoff + j*6-32, 0, buffer[j], 1, 0, 1);
maclobdell 1:dd1d1b64b9a5 86 matrix2.writeDisplay();
maclobdell 1:dd1d1b64b9a5 87 }
maclobdell 1:dd1d1b64b9a5 88 }
maclobdell 1:dd1d1b64b9a5 89 xoff--; /* decrement x offset*/
maclobdell 1:dd1d1b64b9a5 90 Thread::wait(70);
maclobdell 1:dd1d1b64b9a5 91 matrix.clear();
maclobdell 1:dd1d1b64b9a5 92 matrix2.clear();
maclobdell 0:2eec8a9428ea 93 }
maclobdell 1:dd1d1b64b9a5 94
maclobdell 1:dd1d1b64b9a5 95
maclobdell 1:dd1d1b64b9a5 96 }