From 917777d2c50deda43c19c1671c38527b882820bc Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 23 Nov 2021 14:46:19 +0100 Subject: [PATCH] first scroll --- lib/lib_display/LedControl/src/LedMatrix.cpp | 144 +++++++++- lib/lib_display/LedControl/src/LedMatrix.h | 55 +++- .../LedControl/src/font_5x8_horizontal_MSB.h | 264 ++++++++++++++++++ .../LedControl/src/font_6x8_horizontal_MSB.h | 264 ++++++++++++++++++ tasmota/xdsp_19_max7219_matrix.ino | 36 +-- 5 files changed, 716 insertions(+), 47 deletions(-) create mode 100644 lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h create mode 100644 lib/lib_display/LedControl/src/font_6x8_horizontal_MSB.h diff --git a/lib/lib_display/LedControl/src/LedMatrix.cpp b/lib/lib_display/LedControl/src/LedMatrix.cpp index 427ae8c52..19ac0dcb2 100644 --- a/lib/lib_display/LedControl/src/LedMatrix.cpp +++ b/lib/lib_display/LedControl/src/LedMatrix.cpp @@ -25,6 +25,7 @@ */ #include "LedMatrix.h" +#include "font_6x8_horizontal_MSB.h" // public LedMatrix::LedMatrix(int dataPin, int clkPin, int csPin, unsigned int colums, unsigned int rows) @@ -45,22 +46,116 @@ LedMatrix::LedMatrix(int dataPin, int clkPin, int csPin, unsigned int colums, un modulesPerRow = colums; modulesPerCol = rows; - width = colums * 8; - height = rows * 8; + displayWidth = colums * 8; + displayHeight = rows * 8; modules = colums * rows; moduleOrientation = ORIENTATION_UPSIDE_DOWN; ledControl = new LedControl(dataPin, clkPin, csPin, modules); + textBuf[0] = 0; + textWidth = 0; + textPosX = 0; + textPosY = 0; + appendTextBuf[0] = 0; + setScrollAppendText(" "); shutdown(false); // false: on, true: off clear(); setIntensity(7); } +bool LedMatrix::drawText( const char *str) +{ + strncpy(textBuf, str, TEXT_BUFFER_SIZE -1); + textPosX = 0; + textPosY = 0; + textWidth = strlen(textBuf) * charWidth; + if(textWidth < displayWidth) + { + textPosX = (displayWidth - textWidth) / 2; // center + } + else + { + // The text ist longer than the display width. Scrolling is needed. + // Append a space between end of text and the beginning of the repeting text. + appendSpace(); + } + clear(); + drawTextAt(textBuf, textPosX, textPosY); + refresh(); // refresh display with new string content + return true; +} + +bool LedMatrix::drawTextAt( const char *str, const int x, const int y ) +{ + // draw character by character + unsigned int len = strlen(str); + int xPos = x; + for (unsigned int i = 0; i < len; i++) + { + drawCharAt(str[i], xPos, y); + xPos += charWidth; + } + return true; +} + +bool LedMatrix::scrollText() +{ + if(textWidth < displayWidth) return false; // do not scroll when text fits into the display + + textPosX--; + if(textPosX + textWidth < 0) + { + textPosX = 0; // start from the beginning after text scrolled out of display; + } + drawTextAt(textBuf, textPosX, textPosY); + + int startOfRepeatingTextPos = textPosX + textWidth; + if(startOfRepeatingTextPos < displayWidth) + { + // Draw repeating text. + drawTextAt(textBuf, startOfRepeatingTextPos, textPosY); + } + refresh(); + return true; +} + +bool LedMatrix::drawCharAt( char c, const int x, const int y) +{ + // ignore when the character position is not visible on the display + bool visible = ( + x > 0 - (int)charWidth && x < (int)displayWidth && + y > 0 - (int)charHeight && y < (int)displayHeight + ); + if (!visible) return false; + + // ignore the leading bits above charWidth of the font definition + static const byte charOffset = 8 - charWidth; + + for (byte charY = 0; charY < charHeight; charY++) + { + char pixelRow = (font[c][charY]) << charOffset; // skip the first bits when the character width is smaller than 8 pixel + for (byte charX = 0; charX < charWidth; charX++) + { + bool pixel = (pixelRow & 0x80); // pixel=true when upper bit is set + setPixel(x + charX, y + charY, pixel); + pixelRow = pixelRow << 1; // next pixel + } + } + return true; +} + +bool LedMatrix::clearDisplay(void) +{ + textBuf[0] = 0; + memset(textBuf, 0, TEXT_BUFFER_SIZE); + textWidth = 0; + clear(); + return true; +} + + bool LedMatrix::clear(void) { - for (int i = 0; i < MATRIX_BUFFER_SIZE; i++) - { - buffer[i] = 0; - } + memset(buffer, 0, MATRIX_BUFFER_SIZE); for (int addr = 0; addr < modules; addr++) { ledControl->clearDisplay(addr); @@ -83,14 +178,20 @@ bool LedMatrix::setOrientation(ModuleOrientation orientation) return true; } -bool LedMatrix::setPixel(int x, int y, bool on) +bool LedMatrix::setScrollAppendText(const char* append ) { - if (x >= width || y >= height) + strncpy(appendTextBuf, append, TEXT_APPEND_BUFFER_SIZE -1); + return (strlen(append) < TEXT_APPEND_BUFFER_SIZE); +} + +bool LedMatrix::setPixel(const int x, const int y, bool on) +{ + if (x >= displayWidth || y >= displayHeight) return false; int modul_col = x / 8; // x pos divided by 8 is the index of the modul to the right - int buffer_pos = modul_col + y * width / 8; - byte buffer_byte = 8 >> (x % 8); + int buffer_pos = modul_col + y * modulesPerRow; + byte buffer_byte = 0x80 >> (x % 8); if (on) { buffer[buffer_pos] |= buffer_byte; // set bit @@ -99,12 +200,12 @@ bool LedMatrix::setPixel(int x, int y, bool on) { buffer[buffer_pos] &= ~buffer_byte; // reset bit } - refreshByteOfBuffer(buffer_pos); return true; } void LedMatrix::test() { + /* const static byte testMatrix[] PROGMEM = { B00000010, B00111100, B00111100, B00001000, B00000110, B01000010, B01000010, B00010000, @@ -112,7 +213,7 @@ void LedMatrix::test() B00000010, B00000100, B00001100, B01000100, B00000010, B00011000, B00000010, B01111110, B00000010, B00100000, B01000010, B00000100, - B00000000, B11111110, B00111100, B00000100, + B00000000, B01111110, B00111100, B00000100, B00000000, B00000000, B00000000, B00000000, }; for (int i = 0; i < 32; i++) @@ -120,6 +221,17 @@ void LedMatrix::test() buffer[i] = testMatrix[i]; } refresh(); + */ + drawText("1234567890"); + delay(1000); + for( int i=0; i<320; i++) + { + delay(50); + scrollText(); + } + //drawCharAt(0x31, 1, 0); + //setPixel(1,30); + //refresh(); } // private @@ -134,7 +246,7 @@ bool LedMatrix::shutdown(bool b) void LedMatrix::refresh() { - for (int i = 0; i < modulesPerRow * height; i++) + for (int i = 0; i < modulesPerRow * displayHeight; i++) { refreshByteOfBuffer(i); } @@ -184,3 +296,9 @@ byte LedMatrix::revereBitorder (byte b) }; return (lookup[b & 0b1111] << 4) | lookup[b >> 4]; } + +void LedMatrix::appendSpace() +{ + strncat(textBuf, appendTextBuf, TEXT_BUFFER_SIZE -1); + textWidth = strlen(textBuf) * charWidth; +} diff --git a/lib/lib_display/LedControl/src/LedMatrix.h b/lib/lib_display/LedControl/src/LedMatrix.h index f439e5d05..586a06146 100644 --- a/lib/lib_display/LedControl/src/LedMatrix.h +++ b/lib/lib_display/LedControl/src/LedMatrix.h @@ -31,6 +31,8 @@ #define MATRIX_MAX_MODULES 32 #define MATRIX_BUFFER_SIZE MATRIX_MAX_MODULES * 8 // 8 bytes per modul. One byte represents 8 LEDs. +#define TEXT_BUFFER_SIZE 256 +#define TEXT_APPEND_BUFFER_SIZE 16 /** @@ -52,12 +54,19 @@ class LedMatrix private: unsigned int modulesPerRow; unsigned int modulesPerCol; - unsigned int width; // matrix width [pixel] - unsigned int height; // matrix height [pixel] + unsigned int displayWidth; // matrix width [pixel] + unsigned int displayHeight; // matrix height [pixel] unsigned int modules; // number of 8x8 mudules ModuleOrientation moduleOrientation; byte buffer[MATRIX_BUFFER_SIZE]; LedControl* ledControl; + const unsigned int charWidth = 6; + const unsigned int charHeight = 8; + char textBuf[TEXT_BUFFER_SIZE]; + char appendTextBuf[TEXT_APPEND_BUFFER_SIZE]; + unsigned int textWidth; // width of text [pixel] + int textPosX; // horizontal pixel position of scrolling text + int textPosY; // vertical pixelposition of scrolling text; public: @@ -73,7 +82,7 @@ class LedMatrix * @brief Set all LEDs off. * */ - bool clear(void); + bool clearDisplay(void); /** * @brief Set the brightness of the display @@ -82,6 +91,13 @@ class LedMatrix */ bool setIntensity(byte dim); + /** + * @brief Set the a pending string to the scrolling text to set a distance to te repeating text. Usually some spaces. + * + * @param append text to append to the scrolling text before repeating. + */ + bool setScrollAppendText(const char* append ); + /** * @brief Switches the display on or off * @@ -96,6 +112,32 @@ class LedMatrix */ bool setOrientation(ModuleOrientation orientation); + /** + * @brief draw a string to the display. + * When the text fits into the size of the display, it will be shown in the center. + * When the text is longer than than the display width, it can be scrolled per pixel with function scrollText(). + * + * @param str string to display + */ + bool drawText( const char *str ); + + /** + * @brief dwaws a character string to the display. The position (x,y) is used for the upper left pixtel of the text. + * Existing text before the x position will not be cleared. + * + * @param str string to display + * @param x horizantal pixel position to start with string (default 0) + * @param y vertical pixel position for the top position of the string (default 0) + */ + bool drawTextAt( const char *str, const int x, const int y ); + + /** + * @brief Scroll the current teext one picel to the left. + * Repeat with from start when end of text reached. + * + */ + bool scrollText(); + /** * @brief Set the Pixel object * @@ -103,11 +145,14 @@ class LedMatrix * @param y vertical position from top * @param on true: on, false: off */ - bool setPixel( int x, int y, bool on); + bool setPixel( const int x, const int y, bool on=true); void test(); private: + bool drawCharAt( char c, int x, int y ); + bool shutdown(bool b); + bool clear(void); /** * @brief sends the changed content of the buffer to the display @@ -119,6 +164,8 @@ class LedMatrix byte revereBitorder (byte b); + void appendSpace(); + }; #endif //LedMatrix_h \ No newline at end of file diff --git a/lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h b/lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h new file mode 100644 index 000000000..56df774a4 --- /dev/null +++ b/lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h @@ -0,0 +1,264 @@ +// 5x8 ascii font +#ifndef font_5x8_horizontal_MSB_h +#define font_5x8_horizontal_MSB_h + +const char font[256][8]={ +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x00 +{0x0E,0x11,0x1B,0x11,0x1F,0x0E,0x00,0x00}, // 0x01 +{0x0E,0x15,0x1F,0x11,0x1F,0x0E,0x00,0x00}, // 0x02 +{0x0A,0x1F,0x1F,0x1F,0x0E,0x04,0x00,0x00}, // 0x03 +{0x04,0x04,0x0E,0x1F,0x0E,0x04,0x04,0x00}, // 0x04 +{0x04,0x0E,0x04,0x1F,0x15,0x04,0x0E,0x00}, // 0x05 +{0x04,0x0E,0x1F,0x1F,0x15,0x04,0x0E,0x00}, // 0x06 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x07 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x08 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x09 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0A +{0x03,0x03,0x0E,0x11,0x11,0x11,0x0E,0x00}, // 0x0B +{0x0E,0x11,0x11,0x11,0x0E,0x04,0x0E,0x04}, // 0x0C +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0D +{0x03,0x0F,0x09,0x09,0x0B,0x1B,0x18,0x00}, // 0x0E +{0x00,0x15,0x0E,0x1B,0x0E,0x15,0x00,0x00}, // 0x0F +{0x00,0x10,0x1C,0x1F,0x1C,0x10,0x00,0x00}, // 0x10 +{0x00,0x01,0x07,0x1F,0x07,0x01,0x00,0x00}, // 0x11 +{0x04,0x0E,0x04,0x04,0x04,0x0E,0x04,0x00}, // 0x12 +{0x00,0x0A,0x0A,0x0A,0x00,0x0A,0x00,0x00}, // 0x13 +{0x0E,0x1A,0x1A,0x0A,0x0A,0x0A,0x0A,0x00}, // 0x14 +{0x06,0x08,0x04,0x0A,0x04,0x02,0x0C,0x00}, // 0x15 +{0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00}, // 0x16 +{0x04,0x0E,0x04,0x0E,0x04,0x00,0x0E,0x00}, // 0x17 +{0x04,0x0E,0x04,0x04,0x04,0x04,0x04,0x00}, // 0x18 +{0x04,0x04,0x04,0x04,0x04,0x0E,0x04,0x00}, // 0x19 +{0x00,0x00,0x02,0x0F,0x02,0x00,0x00,0x00}, // 0x1A +{0x00,0x00,0x04,0x0F,0x04,0x00,0x00,0x00}, // 0x1B +{0x00,0x00,0x08,0x08,0x08,0x0F,0x00,0x00}, // 0x1C +{0x00,0x00,0x0A,0x1F,0x0A,0x00,0x00,0x00}, // 0x1D +{0x00,0x04,0x04,0x0E,0x0E,0x1F,0x00,0x00}, // 0x1E +{0x00,0x1F,0x0E,0x0E,0x04,0x04,0x00,0x00}, // 0x1F +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 +{0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00}, // 0x21 +{0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x22 +{0x00,0x05,0x1F,0x0A,0x1F,0x14,0x00,0x00}, // 0x23 +{0x04,0x0E,0x0C,0x04,0x06,0x0E,0x04,0x00}, // 0x24 +{0x09,0x15,0x0E,0x0E,0x15,0x12,0x00,0x00}, // 0x25 +{0x04,0x0A,0x0C,0x15,0x12,0x0D,0x00,0x00}, // 0x26 +{0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x27 +{0x03,0x04,0x08,0x08,0x08,0x04,0x03,0x00}, // 0x28 +{0x18,0x04,0x02,0x02,0x02,0x04,0x18,0x00}, // 0x29 +{0x04,0x0A,0x04,0x0A,0x00,0x00,0x00,0x00}, // 0x2A +{0x00,0x00,0x00,0x04,0x0E,0x04,0x00,0x00}, // 0x2B +{0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x08}, // 0x2C +{0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00}, // 0x2D +{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00}, // 0x2E +{0x01,0x02,0x02,0x04,0x04,0x08,0x08,0x00}, // 0x2F +{0x06,0x09,0x09,0x09,0x09,0x06,0x00,0x00}, // 0x30 +{0x04,0x0C,0x04,0x04,0x04,0x0E,0x00,0x00}, // 0x31 +{0x0C,0x02,0x02,0x04,0x08,0x0E,0x00,0x00}, // 0x32 +{0x0C,0x02,0x0C,0x02,0x02,0x0C,0x00,0x00}, // 0x33 +{0x02,0x06,0x0A,0x0F,0x02,0x02,0x00,0x00}, // 0x34 +{0x0E,0x08,0x0C,0x02,0x02,0x0C,0x00,0x00}, // 0x35 +{0x06,0x08,0x0E,0x09,0x09,0x06,0x00,0x00}, // 0x36 +{0x0F,0x01,0x02,0x04,0x04,0x04,0x00,0x00}, // 0x37 +{0x06,0x09,0x06,0x09,0x09,0x06,0x00,0x00}, // 0x38 +{0x06,0x09,0x09,0x07,0x01,0x06,0x00,0x00}, // 0x39 +{0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00}, // 0x3A +{0x00,0x00,0x04,0x00,0x00,0x04,0x04,0x08}, // 0x3B +{0x00,0x01,0x02,0x0C,0x02,0x01,0x00,0x00}, // 0x3C +{0x00,0x00,0x0F,0x00,0x0F,0x00,0x00,0x00}, // 0x3D +{0x00,0x08,0x04,0x03,0x04,0x08,0x00,0x00}, // 0x3E +{0x0E,0x01,0x02,0x04,0x00,0x04,0x00,0x00}, // 0x3F +{0x06,0x09,0x13,0x15,0x17,0x10,0x0F,0x00}, // 0x40 +{0x00,0x04,0x0A,0x0A,0x1F,0x11,0x00,0x00}, // 0x41 +{0x00,0x0E,0x0A,0x0C,0x0A,0x0E,0x00,0x00}, // 0x42 +{0x00,0x07,0x08,0x08,0x08,0x07,0x00,0x00}, // 0x43 +{0x00,0x0E,0x09,0x09,0x09,0x0E,0x00,0x00}, // 0x44 +{0x00,0x0E,0x08,0x0E,0x08,0x0E,0x00,0x00}, // 0x45 +{0x00,0x0E,0x08,0x0E,0x08,0x08,0x00,0x00}, // 0x46 +{0x00,0x07,0x08,0x0B,0x09,0x07,0x00,0x00}, // 0x47 +{0x00,0x09,0x09,0x0F,0x09,0x09,0x00,0x00}, // 0x48 +{0x00,0x0E,0x04,0x04,0x04,0x0E,0x00,0x00}, // 0x49 +{0x00,0x0E,0x02,0x02,0x02,0x0C,0x00,0x00}, // 0x4A +{0x00,0x09,0x0A,0x0C,0x0A,0x09,0x00,0x00}, // 0x4B +{0x00,0x08,0x08,0x08,0x08,0x0F,0x00,0x00}, // 0x4C +{0x00,0x11,0x1B,0x15,0x15,0x11,0x00,0x00}, // 0x4D +{0x00,0x09,0x0D,0x0B,0x09,0x09,0x00,0x00}, // 0x4E +{0x00,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00}, // 0x4F +{0x00,0x0E,0x09,0x0E,0x08,0x08,0x00,0x00}, // 0x50 +{0x00,0x0E,0x11,0x11,0x11,0x0E,0x02,0x01}, // 0x51 +{0x00,0x0C,0x0A,0x0C,0x0A,0x09,0x00,0x00}, // 0x52 +{0x00,0x06,0x08,0x04,0x02,0x0C,0x00,0x00}, // 0x53 +{0x00,0x1F,0x04,0x04,0x04,0x04,0x00,0x00}, // 0x54 +{0x00,0x09,0x09,0x09,0x09,0x06,0x00,0x00}, // 0x55 +{0x00,0x09,0x09,0x09,0x06,0x06,0x00,0x00}, // 0x56 +{0x00,0x11,0x15,0x15,0x0A,0x0A,0x00,0x00}, // 0x57 +{0x00,0x11,0x0A,0x04,0x0A,0x11,0x00,0x00}, // 0x58 +{0x00,0x11,0x0A,0x04,0x04,0x04,0x00,0x00}, // 0x59 +{0x00,0x0F,0x01,0x06,0x08,0x0F,0x00,0x00}, // 0x5A +{0x06,0x04,0x04,0x04,0x04,0x04,0x06,0x00}, // 0x5B +{0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x00}, // 0x5C +{0x0C,0x04,0x04,0x04,0x04,0x04,0x0C,0x00}, // 0x5D +{0x04,0x0A,0x0A,0x11,0x11,0x00,0x00,0x00}, // 0x5E +{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00}, // 0x5F +{0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x60 +{0x00,0x00,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0x61 +{0x08,0x08,0x0E,0x09,0x09,0x0E,0x00,0x00}, // 0x62 +{0x00,0x00,0x06,0x08,0x08,0x06,0x00,0x00}, // 0x63 +{0x02,0x02,0x0E,0x12,0x12,0x0E,0x00,0x00}, // 0x64 +{0x00,0x00,0x04,0x0E,0x08,0x06,0x00,0x00}, // 0x65 +{0x03,0x04,0x0F,0x04,0x04,0x04,0x00,0x00}, // 0x66 +{0x00,0x00,0x07,0x09,0x0F,0x01,0x0E,0x00}, // 0x67 +{0x08,0x08,0x0A,0x0D,0x09,0x09,0x00,0x00}, // 0x68 +{0x04,0x00,0x0C,0x04,0x04,0x04,0x00,0x00}, // 0x69 +{0x02,0x00,0x0E,0x02,0x02,0x02,0x0C,0x00}, // 0x6A +{0x08,0x08,0x0A,0x0C,0x0A,0x09,0x00,0x00}, // 0x6B +{0x0C,0x04,0x04,0x04,0x04,0x04,0x00,0x00}, // 0x6C +{0x00,0x00,0x15,0x1F,0x15,0x15,0x00,0x00}, // 0x6D +{0x00,0x00,0x0A,0x0D,0x09,0x09,0x00,0x00}, // 0x6E +{0x00,0x00,0x06,0x09,0x09,0x06,0x00,0x00}, // 0x6F +{0x00,0x00,0x0E,0x09,0x09,0x0E,0x08,0x00}, // 0x70 +{0x00,0x00,0x0E,0x12,0x12,0x0E,0x02,0x00}, // 0x71 +{0x00,0x00,0x0A,0x0C,0x08,0x08,0x00,0x00}, // 0x72 +{0x00,0x00,0x06,0x0C,0x02,0x0C,0x00,0x00}, // 0x73 +{0x00,0x04,0x0F,0x04,0x04,0x02,0x00,0x00}, // 0x74 +{0x00,0x00,0x09,0x09,0x0B,0x05,0x00,0x00}, // 0x75 +{0x00,0x00,0x09,0x09,0x06,0x06,0x00,0x00}, // 0x76 +{0x00,0x00,0x15,0x15,0x0E,0x0A,0x00,0x00}, // 0x77 +{0x00,0x00,0x09,0x06,0x06,0x09,0x00,0x00}, // 0x78 +{0x00,0x00,0x09,0x09,0x06,0x06,0x1C,0x00}, // 0x79 +{0x00,0x00,0x0E,0x06,0x08,0x0E,0x00,0x00}, // 0x7A +{0x02,0x04,0x04,0x08,0x04,0x04,0x02,0x00}, // 0x7B +{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00}, // 0x7C +{0x08,0x04,0x04,0x02,0x04,0x04,0x08,0x00}, // 0x7D +{0x00,0x00,0x00,0x0D,0x12,0x00,0x00,0x00}, // 0x7E +{0x00,0x04,0x0A,0x0A,0x0A,0x0E,0x00,0x00}, // 0x7F +{0x00,0x07,0x08,0x08,0x08,0x07,0x02,0x04}, // 0x80 +{0x09,0x00,0x09,0x09,0x0B,0x05,0x00,0x00}, // 0x81 +{0x01,0x02,0x04,0x0E,0x08,0x06,0x00,0x00}, // 0x82 +{0x06,0x09,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0x83 +{0x0A,0x00,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0x84 +{0x10,0x08,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0x85 +{0x04,0x0A,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0x86 +{0x00,0x00,0x06,0x08,0x08,0x06,0x02,0x04}, // 0x87 +{0x06,0x09,0x04,0x0E,0x08,0x06,0x00,0x00}, // 0x88 +{0x0A,0x00,0x04,0x0E,0x08,0x06,0x00,0x00}, // 0x89 +{0x10,0x08,0x04,0x0E,0x08,0x06,0x00,0x00}, // 0x8A +{0x0A,0x00,0x0C,0x04,0x04,0x04,0x00,0x00}, // 0x8B +{0x06,0x09,0x0C,0x04,0x04,0x04,0x00,0x00}, // 0x8C +{0x10,0x08,0x0C,0x04,0x04,0x04,0x00,0x00}, // 0x8D +{0x0A,0x04,0x0A,0x0A,0x1F,0x11,0x00,0x00}, // 0x8E +{0x04,0x0A,0x04,0x0A,0x1F,0x11,0x00,0x00}, // 0x8F +{0x01,0x0E,0x08,0x0E,0x08,0x0E,0x00,0x00}, // 0x90 +{0x00,0x00,0x1A,0x07,0x1C,0x13,0x00,0x00}, // 0x91 +{0x00,0x07,0x0A,0x0B,0x1E,0x13,0x00,0x00}, // 0x92 +{0x0C,0x12,0x06,0x09,0x09,0x06,0x00,0x00}, // 0x93 +{0x09,0x00,0x06,0x09,0x09,0x06,0x00,0x00}, // 0x94 +{0x10,0x08,0x06,0x09,0x09,0x06,0x00,0x00}, // 0x95 +{0x0C,0x12,0x09,0x09,0x0B,0x05,0x00,0x00}, // 0x96 +{0x08,0x04,0x09,0x09,0x0B,0x05,0x00,0x00}, // 0x97 +{0x09,0x00,0x09,0x09,0x06,0x06,0x1C,0x00}, // 0x98 +{0x11,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00}, // 0x99 +{0x12,0x09,0x09,0x09,0x09,0x06,0x00,0x00}, // 0x9A +{0x00,0x01,0x06,0x0B,0x0D,0x06,0x08,0x00}, // 0x9B +{0x00,0x04,0x08,0x0C,0x18,0x0E,0x00,0x00}, // 0x9C +{0x01,0x0E,0x13,0x15,0x19,0x0E,0x10,0x00}, // 0x9D +{0x00,0x00,0x09,0x06,0x06,0x09,0x00,0x00}, // 0x9E +{0x02,0x04,0x04,0x0E,0x04,0x04,0x08,0x00}, // 0x9F +{0x01,0x02,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0xA0 +{0x01,0x02,0x0C,0x04,0x04,0x04,0x00,0x00}, // 0xA1 +{0x01,0x02,0x06,0x09,0x09,0x06,0x00,0x00}, // 0xA2 +{0x01,0x02,0x09,0x09,0x0B,0x05,0x00,0x00}, // 0xA3 +{0x0F,0x00,0x0A,0x0D,0x09,0x09,0x00,0x00}, // 0xA4 +{0x1F,0x09,0x0D,0x0B,0x09,0x09,0x00,0x00}, // 0xA5 +{0x0C,0x02,0x0E,0x0A,0x0E,0x00,0x00,0x00}, // 0xA6 +{0x04,0x0A,0x0A,0x0A,0x04,0x00,0x00,0x00}, // 0xA7 +{0x00,0x04,0x00,0x04,0x04,0x02,0x0C,0x00}, // 0xA8 +{0x0E,0x17,0x17,0x15,0x17,0x0E,0x00,0x00}, // 0xA9 +{0x00,0x00,0x00,0x0E,0x02,0x02,0x00,0x00}, // 0xAA +{0x19,0x0A,0x0F,0x05,0x0A,0x13,0x00,0x00}, // 0xAB +{0x19,0x0A,0x0A,0x05,0x0B,0x11,0x00,0x00}, // 0xAC +{0x00,0x00,0x04,0x00,0x04,0x04,0x04,0x00}, // 0xAD +{0x00,0x05,0x0A,0x14,0x0A,0x05,0x00,0x00}, // 0xAE +{0x00,0x14,0x0A,0x05,0x0A,0x14,0x00,0x00}, // 0xAF +{0x15,0x00,0x15,0x00,0x15,0x00,0x15,0x00}, // 0xB0 +{0x15,0x0A,0x15,0x0A,0x15,0x0A,0x15,0x0A}, // 0xB1 +{0x1F,0x15,0x1F,0x15,0x1F,0x15,0x1F,0x15}, // 0xB2 +{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04}, // 0xB3 +{0x04,0x04,0x04,0x1C,0x04,0x04,0x04,0x04}, // 0xB4 +{0x02,0x04,0x0A,0x0A,0x1F,0x11,0x00,0x00}, // 0xB5 +{0x06,0x09,0x04,0x0A,0x1F,0x11,0x00,0x00}, // 0xB6 +{0x08,0x04,0x0A,0x0A,0x1F,0x11,0x00,0x00}, // 0xB7 +{0x0E,0x11,0x17,0x15,0x17,0x11,0x0E,0x00}, // 0xB8 +{0x0A,0x0A,0x1A,0x02,0x1A,0x0A,0x0A,0x0A}, // 0xB9 +{0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A}, // 0xBA +{0x00,0x00,0x1E,0x02,0x1A,0x0A,0x0A,0x0A}, // 0xBB +{0x0A,0x0A,0x1A,0x02,0x1E,0x00,0x00,0x00}, // 0xBC +{0x00,0x04,0x0E,0x08,0x0E,0x04,0x00,0x00}, // 0xBD +{0x00,0x11,0x0A,0x04,0x0E,0x04,0x00,0x00}, // 0xBE +{0x00,0x00,0x00,0x1C,0x04,0x04,0x04,0x04}, // 0xBF +{0x04,0x04,0x04,0x07,0x00,0x00,0x00,0x00}, // 0xC0 +{0x04,0x04,0x04,0x1F,0x00,0x00,0x00,0x00}, // 0xC1 +{0x00,0x00,0x00,0x1F,0x04,0x04,0x04,0x04}, // 0xC2 +{0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04}, // 0xC3 +{0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00}, // 0xC4 +{0x04,0x04,0x04,0x1F,0x04,0x04,0x04,0x04}, // 0xC5 +{0x0D,0x12,0x0C,0x02,0x0E,0x0F,0x00,0x00}, // 0xC6 +{0x0D,0x12,0x04,0x0A,0x1F,0x11,0x00,0x00}, // 0xC7 +{0x0A,0x0A,0x0B,0x08,0x0F,0x00,0x00,0x00}, // 0xC8 +{0x00,0x00,0x0F,0x08,0x0B,0x0A,0x0A,0x0A}, // 0xC9 +{0x0A,0x0A,0x1B,0x00,0x1F,0x00,0x00,0x00}, // 0xCA +{0x00,0x00,0x1F,0x00,0x1B,0x0A,0x0A,0x0A}, // 0xCB +{0x0A,0x0A,0x0B,0x08,0x0B,0x0A,0x0A,0x0A}, // 0xCC +{0x00,0x00,0x1F,0x00,0x1F,0x00,0x00,0x00}, // 0xCD +{0x0A,0x0A,0x1B,0x00,0x1B,0x0A,0x0A,0x0A}, // 0xCE +{0x00,0x11,0x0E,0x0A,0x0E,0x11,0x00,0x00}, // 0xCF +{0x1E,0x04,0x0E,0x12,0x12,0x0C,0x00,0x00}, // 0xD0 +{0x00,0x0E,0x09,0x1D,0x09,0x0E,0x00,0x00}, // 0xD1 +{0x0E,0x0E,0x08,0x0E,0x08,0x0E,0x00,0x00}, // 0xD2 +{0x11,0x0E,0x08,0x0E,0x08,0x0E,0x00,0x00}, // 0xD3 +{0x10,0x0E,0x08,0x0E,0x08,0x0E,0x00,0x00}, // 0xD4 +{0x00,0x00,0x0C,0x04,0x04,0x04,0x00,0x00}, // 0xD5 +{0x01,0x0E,0x04,0x04,0x04,0x0E,0x00,0x00}, // 0xD6 +{0x0E,0x0E,0x04,0x04,0x04,0x0E,0x00,0x00}, // 0xD7 +{0x11,0x0E,0x04,0x04,0x04,0x0E,0x00,0x00}, // 0xD8 +{0x04,0x04,0x04,0x1C,0x00,0x00,0x00,0x00}, // 0xD9 +{0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04}, // 0xDA +{0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}, // 0xDB +{0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F}, // 0xDC +{0x04,0x04,0x04,0x00,0x00,0x04,0x04,0x04}, // 0xDD +{0x10,0x0E,0x04,0x04,0x04,0x0E,0x00,0x00}, // 0xDE +{0x1F,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00}, // 0xDF +{0x01,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00}, // 0xE0 +{0x04,0x0A,0x0A,0x0A,0x09,0x0A,0x00,0x00}, // 0xE1 +{0x0E,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00}, // 0xE2 +{0x10,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00}, // 0xE3 +{0x0D,0x12,0x06,0x09,0x09,0x06,0x00,0x00}, // 0xE4 +{0x1E,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00}, // 0xE5 +{0x00,0x00,0x09,0x09,0x0B,0x0D,0x08,0x00}, // 0xE6 +{0x08,0x08,0x0E,0x09,0x09,0x0E,0x08,0x00}, // 0xE7 +{0x00,0x08,0x0E,0x09,0x0E,0x08,0x00,0x00}, // 0xE8 +{0x01,0x12,0x12,0x12,0x12,0x0C,0x00,0x00}, // 0xE9 +{0x0F,0x09,0x09,0x09,0x09,0x06,0x00,0x00}, // 0xEA +{0x10,0x09,0x09,0x09,0x09,0x06,0x00,0x00}, // 0xEB +{0x01,0x02,0x09,0x09,0x06,0x06,0x18,0x00}, // 0xEC +{0x02,0x15,0x0A,0x04,0x04,0x04,0x00,0x00}, // 0xED +{0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xEE +{0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xEF +{0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00}, // 0xF0 +{0x00,0x00,0x04,0x0E,0x04,0x0E,0x00,0x00}, // 0xF1 +{0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x1F}, // 0xF2 +{0x19,0x1A,0x0A,0x1D,0x0B,0x11,0x00,0x00}, // 0xF3 +{0x0E,0x1A,0x1A,0x0A,0x0A,0x0A,0x0A,0x00}, // 0xF4 +{0x06,0x08,0x04,0x0A,0x04,0x02,0x0C,0x00}, // 0xF5 +{0x00,0x04,0x00,0x0E,0x00,0x04,0x00,0x00}, // 0xF6 +{0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x08}, // 0xF7 +{0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00}, // 0xF8 +{0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xF9 +{0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00}, // 0xFA +{0x0C,0x04,0x04,0x04,0x0E,0x00,0x00,0x00}, // 0xFB +{0x0C,0x02,0x0C,0x02,0x0C,0x00,0x00,0x00}, // 0xFC +{0x0C,0x02,0x04,0x08,0x0E,0x00,0x00,0x00}, // 0xFD +{0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0x00}, // 0xFE +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0xFF +}; + +#endif // font_5x8_horizontal_MSB_h \ No newline at end of file diff --git a/lib/lib_display/LedControl/src/font_6x8_horizontal_MSB.h b/lib/lib_display/LedControl/src/font_6x8_horizontal_MSB.h new file mode 100644 index 000000000..cc3a323cc --- /dev/null +++ b/lib/lib_display/LedControl/src/font_6x8_horizontal_MSB.h @@ -0,0 +1,264 @@ +// 6x8 ascii font +#ifndef font_6x8_horizontal_MSB_h +#define font_6x8_horizontal_MSB_h + +const char font[256][8]={ +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x00 +{0x0E,0x11,0x1B,0x11,0x15,0x11,0x0E,0x00}, // 0x01 +{0x0E,0x1F,0x15,0x1F,0x11,0x1F,0x0E,0x00}, // 0x02 +{0x00,0x0A,0x1F,0x1F,0x1F,0x0E,0x04,0x00}, // 0x03 +{0x00,0x04,0x0E,0x1F,0x1F,0x0E,0x04,0x00}, // 0x04 +{0x04,0x0E,0x0E,0x04,0x1F,0x1F,0x04,0x00}, // 0x05 +{0x00,0x04,0x0E,0x1F,0x1F,0x04,0x0E,0x00}, // 0x06 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x07 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x08 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x09 +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0A +{0x00,0x07,0x03,0x0D,0x12,0x12,0x0C,0x00}, // 0x0B +{0x0E,0x11,0x11,0x0E,0x04,0x0E,0x04,0x00}, // 0x0C +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x0D +{0x03,0x0D,0x0B,0x0D,0x0B,0x1B,0x18,0x00}, // 0x0E +{0x00,0x15,0x0E,0x1B,0x0E,0x15,0x00,0x00}, // 0x0F +{0x08,0x0C,0x0E,0x0F,0x0E,0x0C,0x08,0x00}, // 0x10 +{0x02,0x06,0x0E,0x1E,0x0E,0x06,0x02,0x00}, // 0x11 +{0x04,0x0E,0x1F,0x04,0x1F,0x0E,0x04,0x00}, // 0x12 +{0x0A,0x0A,0x0A,0x0A,0x0A,0x00,0x0A,0x00}, // 0x13 +{0x0F,0x15,0x15,0x0D,0x05,0x05,0x05,0x00}, // 0x14 +{0x0E,0x11,0x0C,0x0A,0x06,0x11,0x0E,0x00}, // 0x15 +{0x00,0x00,0x00,0x00,0x00,0x1E,0x1E,0x00}, // 0x16 +{0x04,0x0E,0x1F,0x04,0x1F,0x0E,0x04,0x0E}, // 0x17 +{0x04,0x0E,0x1F,0x04,0x04,0x04,0x04,0x00}, // 0x18 +{0x04,0x04,0x04,0x04,0x1F,0x0E,0x04,0x00}, // 0x19 +{0x00,0x04,0x06,0x1F,0x06,0x04,0x00,0x00}, // 0x1A +{0x00,0x04,0x0C,0x1F,0x0C,0x04,0x00,0x00}, // 0x1B +{0x00,0x00,0x00,0x10,0x10,0x10,0x1F,0x00}, // 0x1C +{0x00,0x0A,0x0A,0x1F,0x0A,0x0A,0x00,0x00}, // 0x1D +{0x04,0x04,0x0E,0x0E,0x1F,0x1F,0x00,0x00}, // 0x1E +{0x1F,0x1F,0x0E,0x0E,0x04,0x04,0x00,0x00}, // 0x1F +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x20 +{0x04,0x0E,0x0E,0x04,0x04,0x00,0x04,0x00}, // 0x21 +{0x1B,0x1B,0x12,0x00,0x00,0x00,0x00,0x00}, // 0x22 +{0x00,0x0A,0x1F,0x0A,0x0A,0x1F,0x0A,0x00}, // 0x23 +{0x08,0x0E,0x10,0x0C,0x02,0x1C,0x04,0x00}, // 0x24 +{0x19,0x19,0x02,0x04,0x08,0x13,0x13,0x00}, // 0x25 +{0x08,0x14,0x14,0x08,0x15,0x12,0x0D,0x00}, // 0x26 +{0x0C,0x0C,0x08,0x00,0x00,0x00,0x00,0x00}, // 0x27 +{0x04,0x08,0x08,0x08,0x08,0x08,0x04,0x00}, // 0x28 +{0x08,0x04,0x04,0x04,0x04,0x04,0x08,0x00}, // 0x29 +{0x00,0x0A,0x0E,0x1F,0x0E,0x0A,0x00,0x00}, // 0x2A +{0x00,0x04,0x04,0x1F,0x04,0x04,0x00,0x00}, // 0x2B +{0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x08}, // 0x2C +{0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00}, // 0x2D +{0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00}, // 0x2E +{0x00,0x01,0x02,0x04,0x08,0x10,0x00,0x00}, // 0x2F +{0x0E,0x11,0x13,0x15,0x19,0x11,0x0E,0x00}, // 0x30 +{0x04,0x0C,0x04,0x04,0x04,0x04,0x0E,0x00}, // 0x31 +{0x0E,0x11,0x01,0x06,0x08,0x10,0x1F,0x00}, // 0x32 +{0x0E,0x11,0x01,0x0E,0x01,0x11,0x0E,0x00}, // 0x33 +{0x02,0x06,0x0A,0x12,0x1F,0x02,0x02,0x00}, // 0x34 +{0x1F,0x10,0x10,0x1E,0x01,0x11,0x0E,0x00}, // 0x35 +{0x06,0x08,0x10,0x1E,0x11,0x11,0x0E,0x00}, // 0x36 +{0x1F,0x01,0x02,0x04,0x08,0x08,0x08,0x00}, // 0x37 +{0x0E,0x11,0x11,0x0E,0x11,0x11,0x0E,0x00}, // 0x38 +{0x0E,0x11,0x11,0x0F,0x01,0x02,0x0C,0x00}, // 0x39 +{0x00,0x00,0x0C,0x0C,0x00,0x0C,0x0C,0x00}, // 0x3A +{0x00,0x00,0x0C,0x0C,0x00,0x0C,0x0C,0x08}, // 0x3B +{0x02,0x04,0x08,0x10,0x08,0x04,0x02,0x00}, // 0x3C +{0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00}, // 0x3D +{0x08,0x04,0x02,0x01,0x02,0x04,0x08,0x00}, // 0x3E +{0x0E,0x11,0x01,0x06,0x04,0x00,0x04,0x00}, // 0x3F +{0x0E,0x11,0x17,0x15,0x17,0x10,0x0E,0x00}, // 0x40 +{0x0E,0x11,0x11,0x11,0x1F,0x11,0x11,0x00}, // 0x41 +{0x1E,0x11,0x11,0x1E,0x11,0x11,0x1E,0x00}, // 0x42 +{0x0E,0x11,0x10,0x10,0x10,0x11,0x0E,0x00}, // 0x43 +{0x1E,0x11,0x11,0x11,0x11,0x11,0x1E,0x00}, // 0x44 +{0x1F,0x10,0x10,0x1E,0x10,0x10,0x1F,0x00}, // 0x45 +{0x1F,0x10,0x10,0x1E,0x10,0x10,0x10,0x00}, // 0x46 +{0x0E,0x11,0x10,0x17,0x11,0x11,0x0F,0x00}, // 0x47 +{0x11,0x11,0x11,0x1F,0x11,0x11,0x11,0x00}, // 0x48 +{0x0E,0x04,0x04,0x04,0x04,0x04,0x0E,0x00}, // 0x49 +{0x01,0x01,0x01,0x01,0x11,0x11,0x0E,0x00}, // 0x4A +{0x11,0x12,0x14,0x18,0x14,0x12,0x11,0x00}, // 0x4B +{0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0x00}, // 0x4C +{0x11,0x1B,0x15,0x11,0x11,0x11,0x11,0x00}, // 0x4D +{0x11,0x19,0x15,0x13,0x11,0x11,0x11,0x00}, // 0x4E +{0x0E,0x11,0x11,0x11,0x11,0x11,0x0E,0x00}, // 0x4F +{0x1E,0x11,0x11,0x1E,0x10,0x10,0x10,0x00}, // 0x50 +{0x0E,0x11,0x11,0x11,0x15,0x12,0x0D,0x00}, // 0x51 +{0x1E,0x11,0x11,0x1E,0x12,0x11,0x11,0x00}, // 0x52 +{0x0E,0x11,0x10,0x0E,0x01,0x11,0x0E,0x00}, // 0x53 +{0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x00}, // 0x54 +{0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00}, // 0x55 +{0x11,0x11,0x11,0x11,0x11,0x0A,0x04,0x00}, // 0x56 +{0x11,0x11,0x15,0x15,0x15,0x15,0x0A,0x00}, // 0x57 +{0x11,0x11,0x0A,0x04,0x0A,0x11,0x11,0x00}, // 0x58 +{0x11,0x11,0x11,0x0A,0x04,0x04,0x04,0x00}, // 0x59 +{0x1E,0x02,0x04,0x08,0x10,0x10,0x1E,0x00}, // 0x5A +{0x0E,0x08,0x08,0x08,0x08,0x08,0x0E,0x00}, // 0x5B +{0x00,0x10,0x08,0x04,0x02,0x01,0x00,0x00}, // 0x5C +{0x0E,0x02,0x02,0x02,0x02,0x02,0x0E,0x00}, // 0x5D +{0x04,0x0A,0x11,0x00,0x00,0x00,0x00,0x00}, // 0x5E +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F}, // 0x5F +{0x0C,0x0C,0x04,0x00,0x00,0x00,0x00,0x00}, // 0x60 +{0x00,0x00,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0x61 +{0x10,0x10,0x1E,0x11,0x11,0x11,0x1E,0x00}, // 0x62 +{0x00,0x00,0x0E,0x11,0x10,0x11,0x0E,0x00}, // 0x63 +{0x01,0x01,0x0F,0x11,0x11,0x11,0x0F,0x00}, // 0x64 +{0x00,0x00,0x0E,0x11,0x1E,0x10,0x0E,0x00}, // 0x65 +{0x06,0x08,0x08,0x1E,0x08,0x08,0x08,0x00}, // 0x66 +{0x00,0x00,0x0F,0x11,0x11,0x0F,0x01,0x0E}, // 0x67 +{0x10,0x10,0x1C,0x12,0x12,0x12,0x12,0x00}, // 0x68 +{0x04,0x00,0x04,0x04,0x04,0x04,0x06,0x00}, // 0x69 +{0x02,0x00,0x06,0x02,0x02,0x02,0x12,0x0C}, // 0x6A +{0x10,0x10,0x12,0x14,0x18,0x14,0x12,0x00}, // 0x6B +{0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x00}, // 0x6C +{0x00,0x00,0x1A,0x15,0x15,0x11,0x11,0x00}, // 0x6D +{0x00,0x00,0x1C,0x12,0x12,0x12,0x12,0x00}, // 0x6E +{0x00,0x00,0x0E,0x11,0x11,0x11,0x0E,0x00}, // 0x6F +{0x00,0x00,0x1E,0x11,0x11,0x11,0x1E,0x10}, // 0x70 +{0x00,0x00,0x0F,0x11,0x11,0x11,0x0F,0x01}, // 0x71 +{0x00,0x00,0x16,0x09,0x08,0x08,0x1C,0x00}, // 0x72 +{0x00,0x00,0x0E,0x10,0x0E,0x01,0x0E,0x00}, // 0x73 +{0x00,0x08,0x1E,0x08,0x08,0x0A,0x04,0x00}, // 0x74 +{0x00,0x00,0x12,0x12,0x12,0x16,0x0A,0x00}, // 0x75 +{0x00,0x00,0x11,0x11,0x11,0x0A,0x04,0x00}, // 0x76 +{0x00,0x00,0x11,0x11,0x15,0x1F,0x0A,0x00}, // 0x77 +{0x00,0x00,0x12,0x12,0x0C,0x12,0x12,0x00}, // 0x78 +{0x00,0x00,0x12,0x12,0x12,0x0E,0x04,0x18}, // 0x79 +{0x00,0x00,0x1E,0x02,0x0C,0x10,0x1E,0x00}, // 0x7A +{0x06,0x08,0x08,0x18,0x08,0x08,0x06,0x00}, // 0x7B +{0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x00}, // 0x7C +{0x0C,0x02,0x02,0x03,0x02,0x02,0x0C,0x00}, // 0x7D +{0x0A,0x14,0x00,0x00,0x00,0x00,0x00,0x00}, // 0x7E +{0x04,0x0E,0x1B,0x11,0x11,0x1F,0x00,0x00}, // 0x7F +{0x0E,0x11,0x10,0x10,0x11,0x0E,0x04,0x0C}, // 0x80 +{0x12,0x00,0x12,0x12,0x12,0x16,0x0A,0x00}, // 0x81 +{0x03,0x00,0x0E,0x11,0x1E,0x10,0x0E,0x00}, // 0x82 +{0x0E,0x00,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0x83 +{0x0A,0x00,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0x84 +{0x0C,0x00,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0x85 +{0x0E,0x0A,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0x86 +{0x00,0x0E,0x11,0x10,0x11,0x0E,0x04,0x0C}, // 0x87 +{0x0E,0x00,0x0E,0x11,0x1E,0x10,0x0E,0x00}, // 0x88 +{0x0A,0x00,0x0E,0x11,0x1E,0x10,0x0E,0x00}, // 0x89 +{0x0C,0x00,0x0E,0x11,0x1E,0x10,0x0E,0x00}, // 0x8A +{0x0A,0x00,0x04,0x04,0x04,0x04,0x06,0x00}, // 0x8B +{0x0E,0x00,0x04,0x04,0x04,0x04,0x06,0x00}, // 0x8C +{0x08,0x00,0x04,0x04,0x04,0x04,0x06,0x00}, // 0x8D +{0x0A,0x00,0x04,0x0A,0x11,0x1F,0x11,0x00}, // 0x8E +{0x0E,0x0A,0x0E,0x1B,0x11,0x1F,0x11,0x00}, // 0x8F +{0x03,0x00,0x1F,0x10,0x1E,0x10,0x1F,0x00}, // 0x90 +{0x00,0x00,0x1E,0x05,0x1F,0x14,0x0F,0x00}, // 0x91 +{0x0F,0x14,0x14,0x1F,0x14,0x14,0x17,0x00}, // 0x92 +{0x0E,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00}, // 0x93 +{0x0A,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00}, // 0x94 +{0x18,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00}, // 0x95 +{0x0E,0x00,0x12,0x12,0x12,0x16,0x0A,0x00}, // 0x96 +{0x18,0x00,0x12,0x12,0x12,0x16,0x0A,0x00}, // 0x97 +{0x0A,0x00,0x12,0x12,0x12,0x0E,0x04,0x18}, // 0x98 +{0x12,0x0C,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0x99 +{0x0A,0x00,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0x9A +{0x00,0x00,0x01,0x0E,0x16,0x1A,0x1C,0x20}, // 0x9B +{0x06,0x09,0x08,0x1E,0x08,0x09,0x17,0x00}, // 0x9C +{0x0F,0x13,0x15,0x15,0x15,0x19,0x1E,0x00}, // 0x9D +{0x00,0x11,0x0A,0x04,0x0A,0x11,0x00,0x00}, // 0x9E +{0x02,0x05,0x04,0x0E,0x04,0x04,0x14,0x08}, // 0x9F +{0x06,0x00,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0xA0 +{0x06,0x00,0x04,0x04,0x04,0x04,0x06,0x00}, // 0xA1 +{0x06,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00}, // 0xA2 +{0x06,0x00,0x12,0x12,0x12,0x16,0x0A,0x00}, // 0xA3 +{0x0A,0x14,0x00,0x1C,0x12,0x12,0x12,0x00}, // 0xA4 +{0x0A,0x14,0x00,0x12,0x1A,0x16,0x12,0x00}, // 0xA5 +{0x0E,0x01,0x0F,0x11,0x0F,0x00,0x0F,0x00}, // 0xA6 +{0x0C,0x12,0x12,0x12,0x0C,0x00,0x1E,0x00}, // 0xA7 +{0x04,0x00,0x04,0x0C,0x10,0x11,0x0E,0x00}, // 0xA8 +{0x1E,0x25,0x2B,0x2D,0x2B,0x21,0x1E,0x00}, // 0xA9 +{0x00,0x00,0x3F,0x01,0x01,0x00,0x00,0x00}, // 0xAA +{0x10,0x12,0x14,0x0E,0x11,0x02,0x07,0x00}, // 0xAB +{0x10,0x12,0x14,0x0B,0x15,0x07,0x01,0x00}, // 0xAC +{0x04,0x00,0x04,0x04,0x0E,0x0E,0x04,0x00}, // 0xAD +{0x00,0x00,0x09,0x12,0x09,0x00,0x00,0x00}, // 0xAE +{0x00,0x00,0x12,0x09,0x12,0x00,0x00,0x00}, // 0xAF +{0x15,0x00,0x2A,0x00,0x15,0x00,0x2A,0x00}, // 0xB0 +{0x15,0x2A,0x15,0x2A,0x15,0x2A,0x15,0x2A}, // 0xB1 +{0x2A,0x3F,0x15,0x3F,0x2A,0x3F,0x15,0x3F}, // 0xB2 +{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04}, // 0xB3 +{0x04,0x04,0x04,0x3C,0x04,0x04,0x04,0x04}, // 0xB4 +{0x06,0x00,0x04,0x0A,0x11,0x1F,0x11,0x00}, // 0xB5 +{0x0E,0x00,0x04,0x0A,0x11,0x1F,0x11,0x00}, // 0xB6 +{0x0C,0x00,0x04,0x0A,0x11,0x1F,0x11,0x00}, // 0xB7 +{0x1E,0x21,0x2D,0x29,0x2D,0x21,0x1E,0x00}, // 0xB8 +{0x14,0x34,0x04,0x34,0x14,0x14,0x14,0x14}, // 0xB9 +{0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14}, // 0xBA +{0x00,0x3C,0x04,0x34,0x14,0x14,0x14,0x14}, // 0xBB +{0x14,0x34,0x04,0x3C,0x00,0x00,0x00,0x00}, // 0xBC +{0x00,0x04,0x0E,0x10,0x10,0x0E,0x04,0x00}, // 0xBD +{0x11,0x0A,0x04,0x1F,0x04,0x1F,0x04,0x00}, // 0xBE +{0x00,0x00,0x00,0x3C,0x04,0x04,0x04,0x04}, // 0xBF +{0x04,0x04,0x04,0x07,0x00,0x00,0x00,0x00}, // 0xC0 +{0x04,0x04,0x04,0x3F,0x00,0x00,0x00,0x00}, // 0xC1 +{0x00,0x00,0x00,0x3F,0x04,0x04,0x04,0x04}, // 0xC2 +{0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04}, // 0xC3 +{0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00}, // 0xC4 +{0x04,0x04,0x04,0x3F,0x04,0x04,0x04,0x04}, // 0xC5 +{0x05,0x0A,0x0E,0x01,0x0F,0x11,0x0F,0x00}, // 0xC6 +{0x05,0x0A,0x04,0x0A,0x11,0x1F,0x11,0x00}, // 0xC7 +{0x14,0x17,0x10,0x1F,0x00,0x00,0x00,0x00}, // 0xC8 +{0x00,0x1F,0x10,0x17,0x14,0x14,0x14,0x14}, // 0xC9 +{0x14,0x37,0x00,0x3F,0x00,0x00,0x00,0x00}, // 0xCA +{0x00,0x3F,0x00,0x37,0x14,0x14,0x14,0x14}, // 0xCB +{0x14,0x17,0x10,0x17,0x14,0x14,0x14,0x14}, // 0xCC +{0x00,0x3F,0x00,0x3F,0x00,0x00,0x00,0x00}, // 0xCD +{0x14,0x37,0x00,0x37,0x14,0x14,0x14,0x14}, // 0xCE +{0x11,0x0E,0x11,0x11,0x11,0x0E,0x11,0x00}, // 0xCF +{0x0C,0x10,0x08,0x04,0x0E,0x12,0x0C,0x00}, // 0xD0 +{0x0E,0x09,0x09,0x1D,0x09,0x09,0x0E,0x00}, // 0xD1 +{0x0E,0x00,0x1F,0x10,0x1E,0x10,0x1F,0x00}, // 0xD2 +{0x0A,0x00,0x1F,0x10,0x1E,0x10,0x1F,0x00}, // 0xD3 +{0x0C,0x00,0x1F,0x10,0x1E,0x10,0x1F,0x00}, // 0xD4 +{0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00}, // 0xD5 +{0x06,0x00,0x0E,0x04,0x04,0x04,0x0E,0x00}, // 0xD6 +{0x0E,0x00,0x0E,0x04,0x04,0x04,0x0E,0x00}, // 0xD7 +{0x0A,0x00,0x0E,0x04,0x04,0x04,0x0E,0x00}, // 0xD8 +{0x04,0x04,0x04,0x3C,0x00,0x00,0x00,0x00}, // 0xD9 +{0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04}, // 0xDA +{0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F}, // 0xDB +{0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F}, // 0xDC +{0x04,0x04,0x04,0x00,0x04,0x04,0x04,0x00}, // 0xDD +{0x0C,0x00,0x0E,0x04,0x04,0x04,0x0E,0x00}, // 0xDE +{0x3F,0x3F,0x3F,0x3F,0x00,0x00,0x00,0x00}, // 0xDF +{0x06,0x0C,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0xE0 +{0x00,0x1C,0x12,0x1C,0x12,0x12,0x1C,0x10}, // 0xE1 +{0x0E,0x0C,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0xE2 +{0x18,0x0C,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0xE3 +{0x0A,0x14,0x00,0x0C,0x12,0x12,0x0C,0x00}, // 0xE4 +{0x0A,0x14,0x0C,0x12,0x12,0x12,0x0C,0x00}, // 0xE5 +{0x00,0x00,0x12,0x12,0x12,0x1C,0x10,0x10}, // 0xE6 +{0x00,0x18,0x10,0x1C,0x12,0x1C,0x10,0x18}, // 0xE7 +{0x18,0x10,0x1C,0x12,0x12,0x1C,0x10,0x18}, // 0xE8 +{0x06,0x00,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0xE9 +{0x0E,0x00,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0xEA +{0x18,0x00,0x12,0x12,0x12,0x12,0x0C,0x00}, // 0xEB +{0x06,0x00,0x12,0x12,0x12,0x0E,0x04,0x18}, // 0xEC +{0x06,0x00,0x11,0x0A,0x04,0x04,0x04,0x00}, // 0xED +{0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00}, // 0xEE +{0x0C,0x0C,0x08,0x00,0x00,0x00,0x00,0x00}, // 0xEF +{0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00}, // 0xF0 +{0x00,0x04,0x0E,0x04,0x00,0x0E,0x00,0x00}, // 0xF1 +{0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00}, // 0xF2 +{0x30,0x1A,0x34,0x0B,0x15,0x07,0x01,0x00}, // 0xF3 +{0x0F,0x15,0x15,0x0D,0x05,0x05,0x05,0x00}, // 0xF4 +{0x0E,0x11,0x0C,0x0A,0x06,0x11,0x0E,0x00}, // 0xF5 +{0x00,0x04,0x00,0x1F,0x00,0x04,0x00,0x00}, // 0xF6 +{0x00,0x00,0x00,0x0E,0x06,0x00,0x00,0x00}, // 0xF7 +{0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00}, // 0xF8 +{0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00}, // 0xF9 +{0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00}, // 0xFA +{0x08,0x18,0x08,0x08,0x00,0x00,0x00,0x00}, // 0xFB +{0x1C,0x08,0x0C,0x18,0x00,0x00,0x00,0x00}, // 0xFC +{0x18,0x04,0x08,0x1C,0x00,0x00,0x00,0x00}, // 0xFD +{0x00,0x00,0x1E,0x1E,0x1E,0x1E,0x00,0x00}, // 0xFE +{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // 0xFF +}; + +#endif \ No newline at end of file diff --git a/tasmota/xdsp_19_max7219_matrix.ino b/tasmota/xdsp_19_max7219_matrix.ino index da3177f59..bbd0a069d 100644 --- a/tasmota/xdsp_19_max7219_matrix.ino +++ b/tasmota/xdsp_19_max7219_matrix.ino @@ -175,31 +175,6 @@ bool MAX7291Matrix_init(void) return true; } -// /*********************************************************************************************\ -// * Clears the display -// * Command: DisplayText -// \*********************************************************************************************/ -bool MAX7291Matrix_Text() -{ - char sString[CMD_MAX_LEN + 1]; - subStr(sString, XdrvMailbox.data, ",", 1); - max7219_Matrix->clear(); - AddLog(LOG_LEVEL_DEBUG, PSTR("MTX: sString %s"), sString); - - // test - uint8_t length = strlen(sString); - //if(length > modulesPerRow) - length = modulesPerRow; - - for (int addr = 0; addr < length; addr++) - { - max7219_Matrix->setPixel(addr, addr, true); - AddLog(LOG_LEVEL_DEBUG, PSTR("MTX: setPixel() %d, %d)"), addr, addr); - } - - return true; -} - bool Xdsp19(uint8_t function) { bool result = false; @@ -216,7 +191,7 @@ bool Xdsp19(uint8_t function) result = true; break; case FUNC_DISPLAY_CLEAR: - result = max7219_Matrix->clear(); + result = max7219_Matrix->clearDisplay(); break; case FUNC_DISPLAY_DIM: result = max7219_Matrix->setIntensity(GetDisplayDimmer16()); @@ -232,12 +207,13 @@ bool Xdsp19(uint8_t function) case FUNC_DISPLAY_SCROLLTEXT: case FUNC_DISPLAY_CLOCK: case FUNC_DISPLAY_DRAW_STRING: - result = MAX7291Matrix_Text(); + result = max7219_Matrix->drawText(dsp_str); + break; + case FUNC_DISPLAY_EVERY_SECOND: + //result = max7219_Matrix->scrollText(); break; case FUNC_DISPLAY_EVERY_50_MSECOND: - case FUNC_DISPLAY_EVERY_SECOND: - // ignore - return false; + result = max7219_Matrix->scrollText(); default: result = false; }