diff --git a/lib/lib_display/LedControl/src/LedControl.cpp b/lib/lib_display/LedControl/src/LedControl.cpp index e43211fd8..11e7a2908 100644 --- a/lib/lib_display/LedControl/src/LedControl.cpp +++ b/lib/lib_display/LedControl/src/LedControl.cpp @@ -47,16 +47,16 @@ LedControl::LedControl(int dataPin, int clkPin, int csPin, int numDevices) { SPI_MOSI=dataPin; SPI_CLK=clkPin; SPI_CS=csPin; - if(numDevices<=0 || numDevices>8 ) - numDevices=8; - maxDevices=numDevices; + if (numDevices <= 0 || numDevices > MAX72XX_MAX_DEVICES) + numDevices = MAX72XX_MAX_DEVICES; + maxDevices = numDevices; pinMode(SPI_MOSI,OUTPUT); pinMode(SPI_CLK,OUTPUT); pinMode(SPI_CS,OUTPUT); digitalWrite(SPI_CS,HIGH); SPI_MOSI=dataPin; - for(int i=0;i<64;i++) - status[i]=0x00; + for (int i = 0; i < 8 * MAX72XX_MAX_DEVICES; i++) + status[i] = 0x00; for(int i=0;i 7) + return; + for (int addr = 0; addr < maxDevices; addr++) + status[addr * 8 + row] = value[addr]; + spiTransferLong(row + 1, value); +} + void LedControl::setColumn(int addr, int col, byte value) { byte val; @@ -195,7 +204,7 @@ void LedControl::spiTransfer(int addr, volatile byte opcode, volatile byte data) int maxbytes=maxDevices*2; for(int i=0;i 0; i--) + shiftOut(SPI_MOSI, SPI_CLK, MSBFIRST, spidata[i - 1]); + //latch the data onto the display + digitalWrite(SPI_CS, HIGH); +} diff --git a/lib/lib_display/LedControl/src/LedControl.h b/lib/lib_display/LedControl/src/LedControl.h index f8180d07d..31fed9ffe 100644 --- a/lib/lib_display/LedControl/src/LedControl.h +++ b/lib/lib_display/LedControl/src/LedControl.h @@ -35,6 +35,10 @@ #include #endif +#ifndef MAX72XX_MAX_DEVICES +#define MAX72XX_MAX_DEVICES 32 // maximum number of devices based on MXA7219/MAX7221 +#endif + /* * Segments to be switched on for characters and digits on * 7-Segment Displays @@ -61,12 +65,14 @@ const static byte charTable [] PROGMEM = { class LedControl { private : /* The array for shifting the data to the devices */ - byte spidata[16]; - /* Send out a single command to the device */ + byte spidata[2 * MAX72XX_MAX_DEVICES]; + /* Send out a single command to one device */ void spiTransfer(int addr, byte opcode, byte data); + /* Send out a command with the same opcode to all devices */ + void spiTransferLong(byte opcode, const byte* data); /* We keep track of the led-status for all 8 devices in this array */ - byte status[64]; + byte status[8 * MAX72XX_MAX_DEVICES]; /* Data is shifted out of this pin*/ int SPI_MOSI; /* The clock is signaled on this pin */ @@ -149,6 +155,14 @@ class LedControl { */ void setRow(int addr, int row, byte value); + /** + * @brief Set data for the same row of all devices + * + * @param row [0..8] + * @param value array of bytes, one for each device + */ + void setRowLong(int row, byte* value); + /* * Set all 8 Led's in a column to a new state * Params: diff --git a/lib/lib_display/LedControl/src/LedMatrix.cpp b/lib/lib_display/LedControl/src/LedMatrix.cpp index b4fb8c260..1579e0852 100644 --- a/lib/lib_display/LedControl/src/LedMatrix.cpp +++ b/lib/lib_display/LedControl/src/LedMatrix.cpp @@ -32,17 +32,17 @@ // public LedMatrix::LedMatrix(int dataPin, int clkPin, int csPin, unsigned int colums, unsigned int rows) { - if (colums * rows > MATRIX_MAX_MODULES) + if (colums * rows > MAX72XX_MAX_DEVICES) { // dimension exeeds maximum buffer size - if (colums >= MATRIX_MAX_MODULES) + if (colums >= MAX72XX_MAX_DEVICES) { - colums = MATRIX_MAX_MODULES; + colums = MAX72XX_MAX_DEVICES; rows = 1; } else { - rows = MATRIX_MAX_MODULES / colums; + rows = MAX72XX_MAX_DEVICES / colums; } } @@ -66,7 +66,7 @@ LedMatrix::LedMatrix(int dataPin, int clkPin, int csPin, unsigned int colums, un setIntensity(7); } -bool LedMatrix::drawText( const char *str) +bool LedMatrix::drawText( const char *str, bool clearBefore) { strncpy(textBuf, str, TEXT_BUFFER_SIZE -1); textPosX = 0; @@ -75,7 +75,7 @@ bool LedMatrix::drawText( const char *str) if(textWidth < displayWidth) { // text fits into the display, place it into the center - clear(); + if(clearBefore) clear(); textPosX = (displayWidth - textWidth) / 2; // center } else @@ -146,9 +146,13 @@ bool LedMatrix::setIntensity(byte dim) return true; } -bool LedMatrix::setOrientation(ModuleOrientation orientation) +bool LedMatrix::setOrientation(LedMatrix::ModuleOrientation orientation) { - moduleOrientation = orientation; + if(moduleOrientation != orientation) + { + moduleOrientation = orientation; + refresh(); + } return true; } @@ -268,9 +272,9 @@ void LedMatrix::refreshByteOfBuffer(int i) byte LedMatrix::revereBitorder (byte b) { - const static byte lookup[] PROGMEM = { + static const byte lookup[16] = { 0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, - 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf, + 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf }; return (lookup[b & 0b1111] << 4) | lookup[b >> 4]; } diff --git a/lib/lib_display/LedControl/src/LedMatrix.h b/lib/lib_display/LedControl/src/LedMatrix.h index efb50b8e3..b369173d0 100644 --- a/lib/lib_display/LedControl/src/LedMatrix.h +++ b/lib/lib_display/LedControl/src/LedMatrix.h @@ -29,8 +29,7 @@ #include -#define MATRIX_MAX_MODULES 32 // maximum number of modules that can be used -#define MATRIX_BUFFER_SIZE MATRIX_MAX_MODULES * 8 // 8 bytes per modul. One byte represents 8 LEDs. +#define MATRIX_BUFFER_SIZE MAX72XX_MAX_DEVICES * 8 // 8 bytes per modul. One byte represents 8 LEDs. #define TEXT_BUFFER_SIZE 256 // maximum text length that can be scrolled #define TEXT_APPEND_BUFFER_SIZE 16 // used for characters that are appended to the scroll text, before it repeats @@ -66,12 +65,14 @@ class LedMatrix * When the text is longer than than the display width, it can be scrolled per pixel with function scrollText(). * * @param str string to display + * @param clearBefore true (default) clears old display content before, false: do not clear display before */ - bool drawText( const char *str ); + bool drawText( const char *str, bool clearBefore = true ); /** * @brief Dwaws a character string to a defined display position. The position (x,y) is used for the upper left pixel of the text. - * Existing text before the x position will not be cleared. Use refresh() after all text parts are drawed. + * Existing content outside the drawing text area will not be cleared. But you can use clearDisplay() before. + * Use refresh() after all text parts are drawed. * * @param str string to display * @param x horizantal pixel position to start with string (0 is most left) @@ -112,7 +113,7 @@ class LedMatrix * * @param orientation */ - bool setOrientation(ModuleOrientation orientation); + bool setOrientation(LedMatrix::ModuleOrientation orientation); /** * @brief Set ap pixel at a defined position. @@ -151,7 +152,7 @@ class LedMatrix unsigned int displayWidth; // matrix width [pixel] unsigned int displayHeight; // matrix height [pixel] unsigned int modules; // number of 8x8 mudules - ModuleOrientation moduleOrientation; + uint8_t moduleOrientation; byte buffer[MATRIX_BUFFER_SIZE]; LedControl* ledControl; int charWidth; diff --git a/lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h b/lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h deleted file mode 100644 index da3becc4e..000000000 --- a/lib/lib_display/LedControl/src/font_5x8_horizontal_MSB.h +++ /dev/null @@ -1,267 +0,0 @@ -// 5x8 ascii font -#ifndef font_5x8_horizontal_MSB_h -#define font_5x8_horizontal_MSB_h - -const unsigned int font_char_width = 5; -const unsigned int font_char_height = 8; - -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_8x8_horizontal_latin_MSB.h b/lib/lib_display/LedControl/src/font_8x8_horizontal_latin_MSB.h deleted file mode 100644 index e1a8af7ae..000000000 --- a/lib/lib_display/LedControl/src/font_8x8_horizontal_latin_MSB.h +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef font_8x8_horizontal_latin_MSB_h -#define font_8x8_horizontal_latin_MSB_h - -const unsigned int font_char_width = 8; -const unsigned int font_char_height = 8; - -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}, // U+0020 (space) - { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, // U+0021 (!) - { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0022 (") - { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, // U+0023 (#) - { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, // U+0024 ($) - { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, // U+0025 (%) - { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, // U+0026 (&) - { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0027 (') - { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, // U+0028 (() - { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, // U+0029 ()) - { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // U+002A (*) - { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, // U+002B (+) - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+002C (,) - { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, // U+002D (-) - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+002E (.) - { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, // U+002F (/) - { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, // U+0030 (0) - { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, // U+0031 (1) - { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, // U+0032 (2) - { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, // U+0033 (3) - { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, // U+0034 (4) - { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, // U+0035 (5) - { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, // U+0036 (6) - { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, // U+0037 (7) - { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+0038 (8) - { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, // U+0039 (9) - { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, // U+003A (:) - { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, // U+003B (;) - { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, // U+003C (<) - { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, // U+003D (=) - { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, // U+003E (>) - { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, // U+003F (?) - { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, // U+0040 (@) - { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, // U+0041 (A) - { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, // U+0042 (B) - { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, // U+0043 (C) - { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, // U+0044 (D) - { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, // U+0045 (E) - { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, // U+0046 (F) - { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, // U+0047 (G) - { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, // U+0048 (H) - { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0049 (I) - { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, // U+004A (J) - { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, // U+004B (K) - { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, // U+004C (L) - { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, // U+004D (M) - { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, // U+004E (N) - { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, // U+004F (O) - { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, // U+0050 (P) - { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, // U+0051 (Q) - { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, // U+0052 (R) - { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, // U+0053 (S) - { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0054 (T) - { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, // U+0055 (U) - { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0056 (V) - { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, // U+0057 (W) - { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, // U+0058 (X) - { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+0059 (Y) - { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, // U+005A (Z) - { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, // U+005B ([) - { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, // U+005C (\) - { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, // U+005D (]) - { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, // U+005E (^) - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, // U+005F (_) - { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+0060 (`) - { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, // U+0061 (a) - { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, // U+0062 (b) - { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, // U+0063 (c) - { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, // U+0064 (d) - { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, // U+0065 (e) - { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, // U+0066 (f) - { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0067 (g) - { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, // U+0068 (h) - { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+0069 (i) - { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, // U+006A (j) - { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, // U+006B (k) - { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+006C (l) - { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, // U+006D (m) - { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, // U+006E (n) - { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+006F (o) - { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+0070 (p) - { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, // U+0071 (q) - { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, // U+0072 (r) - { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, // U+0073 (s) - { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, // U+0074 (t) - { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, // U+0075 (u) - { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, // U+0076 (v) - { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, // U+0077 (w) - { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, // U+0078 (x) - { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+0079 (y) - { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, // U+007A (z) - { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, // U+007B ({) - { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+007C (|) - { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, // U+007D (}) - { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~) - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007F{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 - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00A0 (no break space) - { 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00}, // U+00A1 (inverted !) - { 0x18, 0x18, 0x7E, 0x03, 0x03, 0x7E, 0x18, 0x18}, // U+00A2 (dollarcents) - { 0x1C, 0x36, 0x26, 0x0F, 0x06, 0x67, 0x3F, 0x00}, // U+00A3 (pound sterling) - { 0x00, 0x00, 0x63, 0x3E, 0x36, 0x3E, 0x63, 0x00}, // U+00A4 (currency mark) - { 0x33, 0x33, 0x1E, 0x3F, 0x0C, 0x3F, 0x0C, 0x0C}, // U+00A5 (yen) - { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, // U+00A6 (broken pipe) - { 0x7C, 0xC6, 0x1C, 0x36, 0x36, 0x1C, 0x33, 0x1E}, // U+00A7 (paragraph) - { 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00A8 (diaeresis) - { 0x3C, 0x42, 0x99, 0x85, 0x85, 0x99, 0x42, 0x3C}, // U+00A9 (copyright symbol) - { 0x3C, 0x36, 0x36, 0x7C, 0x00, 0x00, 0x00, 0x00}, // U+00AA (superscript a) - { 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00}, // U+00AB (<<) - { 0x00, 0x00, 0x00, 0x3F, 0x30, 0x30, 0x00, 0x00}, // U+00AC (gun pointing left) - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00AD (soft hyphen) - { 0x3C, 0x42, 0x9D, 0xA5, 0x9D, 0xA5, 0x42, 0x3C}, // U+00AE (registered symbol) - { 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00AF (macron) - { 0x1C, 0x36, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00}, // U+00B0 (degree) - { 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00}, // U+00B1 (plusminus) - { 0x1C, 0x30, 0x18, 0x0C, 0x3C, 0x00, 0x00, 0x00}, // U+00B2 (superscript 2) - { 0x1C, 0x30, 0x18, 0x30, 0x1C, 0x00, 0x00, 0x00}, // U+00B2 (superscript 3) - { 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+00B2 (aigu) - { 0x00, 0x00, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x03}, // U+00B5 (mu) - { 0xFE, 0xDB, 0xDB, 0xDE, 0xD8, 0xD8, 0xD8, 0x00}, // U+00B6 (pilcrow) - { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, // U+00B7 (central dot) - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x1E}, // U+00B8 (cedille) - { 0x08, 0x0C, 0x08, 0x1C, 0x00, 0x00, 0x00, 0x00}, // U+00B9 (superscript 1) - { 0x1C, 0x36, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00}, // U+00BA (superscript 0) - { 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00}, // U+00BB (>>) - { 0xC3, 0x63, 0x33, 0xBD, 0xEC, 0xF6, 0xF3, 0x03}, // U+00BC (1/4) - { 0xC3, 0x63, 0x33, 0x7B, 0xCC, 0x66, 0x33, 0xF0}, // U+00BD (1/2) - { 0x03, 0xC4, 0x63, 0xB4, 0xDB, 0xAC, 0xE6, 0x80}, // U+00BE (3/4) - { 0x0C, 0x00, 0x0C, 0x06, 0x03, 0x33, 0x1E, 0x00}, // U+00BF (inverted ?) - { 0x07, 0x00, 0x1C, 0x36, 0x63, 0x7F, 0x63, 0x00}, // U+00C0 (A grave) - { 0x70, 0x00, 0x1C, 0x36, 0x63, 0x7F, 0x63, 0x00}, // U+00C1 (A aigu) - { 0x1C, 0x36, 0x00, 0x3E, 0x63, 0x7F, 0x63, 0x00}, // U+00C2 (A circumflex) - { 0x6E, 0x3B, 0x00, 0x3E, 0x63, 0x7F, 0x63, 0x00}, // U+00C3 (A ~) - { 0x63, 0x1C, 0x36, 0x63, 0x7F, 0x63, 0x63, 0x00}, // U+00C4 (A umlaut) - { 0x0C, 0x0C, 0x00, 0x1E, 0x33, 0x3F, 0x33, 0x00}, // U+00C5 (A ring) - { 0x7C, 0x36, 0x33, 0x7F, 0x33, 0x33, 0x73, 0x00}, // U+00C6 (AE) - { 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x18, 0x30, 0x1E}, // U+00C7 (C cedille) - { 0x07, 0x00, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00C8 (E grave) - { 0x38, 0x00, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00C9 (E aigu) - { 0x0C, 0x12, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00CA (E circumflex) - { 0x36, 0x00, 0x3F, 0x06, 0x1E, 0x06, 0x3F, 0x00}, // U+00CB (E umlaut) - { 0x07, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CC (I grave) - { 0x38, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CD (I aigu) - { 0x0C, 0x12, 0x00, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CE (I circumflex) - { 0x33, 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00CF (I umlaut) - { 0x3F, 0x66, 0x6F, 0x6F, 0x66, 0x66, 0x3F, 0x00}, // U+00D0 (Eth) - { 0x3F, 0x00, 0x33, 0x37, 0x3F, 0x3B, 0x33, 0x00}, // U+00D1 (N ~) - { 0x0E, 0x00, 0x18, 0x3C, 0x66, 0x3C, 0x18, 0x00}, // U+00D2 (O grave) - { 0x70, 0x00, 0x18, 0x3C, 0x66, 0x3C, 0x18, 0x00}, // U+00D3 (O aigu) - { 0x3C, 0x66, 0x18, 0x3C, 0x66, 0x3C, 0x18, 0x00}, // U+00D4 (O circumflex) - { 0x6E, 0x3B, 0x00, 0x3E, 0x63, 0x63, 0x3E, 0x00}, // U+00D5 (O ~) - { 0xC3, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x18, 0x00}, // U+00D6 (O umlaut) - { 0x00, 0x36, 0x1C, 0x08, 0x1C, 0x36, 0x00, 0x00}, // U+00D7 (multiplicative x) - { 0x5C, 0x36, 0x73, 0x7B, 0x6F, 0x36, 0x1D, 0x00}, // U+00D8 (O stroke) - { 0x0E, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U+00D9 (U grave) - { 0x70, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U+00DA (U aigu) - { 0x3C, 0x66, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U+00DB (U circumflex) - { 0x33, 0x00, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x00}, // U+00DC (U umlaut) - { 0x70, 0x00, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x00}, // U+00DD (Y aigu) - { 0x0F, 0x06, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x0F}, // U+00DE (Thorn) - { 0x00, 0x1E, 0x33, 0x1F, 0x33, 0x1F, 0x03, 0x03}, // U+00DF (beta) - { 0x07, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E0 (a grave) - { 0x38, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E1 (a aigu) - { 0x7E, 0xC3, 0x3C, 0x60, 0x7C, 0x66, 0xFC, 0x00}, // U+00E2 (a circumflex) - { 0x6E, 0x3B, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E3 (a ~) - { 0x33, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E4 (a umlaut) - { 0x0C, 0x0C, 0x1E, 0x30, 0x3E, 0x33, 0x7E, 0x00}, // U+00E5 (a ring) - { 0x00, 0x00, 0xFE, 0x30, 0xFE, 0x33, 0xFE, 0x00}, // U+00E6 (ae) - { 0x00, 0x00, 0x1E, 0x03, 0x03, 0x1E, 0x30, 0x1C}, // U+00E7 (c cedille) - { 0x07, 0x00, 0x1E, 0x33, 0x3F, 0x03, 0x1E, 0x00}, // U+00E8 (e grave) - { 0x38, 0x00, 0x1E, 0x33, 0x3F, 0x03, 0x1E, 0x00}, // U+00E9 (e aigu) - { 0x7E, 0xC3, 0x3C, 0x66, 0x7E, 0x06, 0x3C, 0x00}, // U+00EA (e circumflex) - { 0x33, 0x00, 0x1E, 0x33, 0x3F, 0x03, 0x1E, 0x00}, // U+00EB (e umlaut) - { 0x07, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00EC (i grave) - { 0x1C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00ED (i augu) - { 0x3E, 0x63, 0x1C, 0x18, 0x18, 0x18, 0x3C, 0x00}, // U+00EE (i circumflex) - { 0x33, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, // U+00EF (i umlaut) - { 0x1B, 0x0E, 0x1B, 0x30, 0x3E, 0x33, 0x1E, 0x00}, // U+00F0 (eth) - { 0x00, 0x1F, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x00}, // U+00F1 (n ~) - { 0x00, 0x07, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F2 (o grave) - { 0x00, 0x38, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F3 (o aigu) - { 0x1E, 0x33, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F4 (o circumflex) - { 0x6E, 0x3B, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F5 (o ~) - { 0x00, 0x33, 0x00, 0x1E, 0x33, 0x33, 0x1E, 0x00}, // U+00F6 (o umlaut) - { 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00}, // U+00F7 (division) - { 0x00, 0x60, 0x3C, 0x76, 0x7E, 0x6E, 0x3C, 0x06}, // U+00F8 (o stroke) - { 0x00, 0x07, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00F9 (u grave) - { 0x00, 0x38, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00FA (u aigu) - { 0x1E, 0x33, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00FB (u circumflex) - { 0x00, 0x33, 0x00, 0x33, 0x33, 0x33, 0x7E, 0x00}, // U+00FC (u umlaut) - { 0x00, 0x38, 0x00, 0x33, 0x33, 0x3E, 0x30, 0x1F}, // U+00FD (y aigu) - { 0x00, 0x00, 0x06, 0x3E, 0x66, 0x3E, 0x06, 0x00}, // U+00FE (thorn) - { 0x00, 0x33, 0x00, 0x33, 0x33, 0x3E, 0x30, 0x1F} // U+00FF (y umlaut) -}; - -#endif \ No newline at end of file diff --git a/tasmota/xdsp_19_max7219_matrix.ino b/tasmota/xdsp_19_max7219_matrix.ino index 3ec3ac332..82a4a24bb 100644 --- a/tasmota/xdsp_19_max7219_matrix.ino +++ b/tasmota/xdsp_19_max7219_matrix.ino @@ -113,22 +113,31 @@ bool MAX7291Matrix_initDriver(void) } Settings->display_model = XDSP_19; + renderer = nullptr; // renderer not yet used if (Settings->display_width) // [pixel] { LedMatrix_settings.modulesPerRow = (Settings->display_width - 1) / 8 + 1; } Settings->display_width = 8 * LedMatrix_settings.modulesPerRow; - Settings->display_cols[0] = Settings->display_width; + Settings->display_cols[0] = LedMatrix_settings.modulesPerRow; if (Settings->display_height) // [pixel] { LedMatrix_settings.modulesPerCol = (Settings->display_height - 1) / 8 + 1; } - Settings->display_height = 8 * LedMatrix_settings. modulesPerCol; - Settings->display_rows = Settings->display_height; - Settings->display_cols[1] = Settings->display_height; + Settings->display_height = 8 * LedMatrix_settings.modulesPerCol; + Settings->display_rows = LedMatrix_settings.modulesPerCol; + Settings->display_cols[1] = LedMatrix_settings.modulesPerCol; max7219_Matrix = new LedMatrix(Pin(GPIO_MAX7219DIN), Pin(GPIO_MAX7219CLK), Pin(GPIO_MAX7219CS), LedMatrix_settings.modulesPerRow, LedMatrix_settings.modulesPerCol); + if( LedMatrix_settings.show_clock == 0) + { + Settings->display_mode = 0; // text mode + } + else{ + Settings->display_mode = 1; // clock mode + } max2791Matrix_initDriver_done = true; + AddLog(LOG_LEVEL_INFO, PSTR("MTX: MAX7291Matrix_initDriver DIN:%d CLK:%d CS:%d size(%dx%d)"), Pin(GPIO_MAX7219DIN), Pin(GPIO_MAX7219CLK), Pin(GPIO_MAX7219CS), LedMatrix_settings.modulesPerRow, LedMatrix_settings.modulesPerCol); return MAX7291Matrix_init(); } @@ -137,12 +146,17 @@ bool MAX7291Matrix_init(void) { int intensity = GetDisplayDimmer16(); // 0..15 max7219_Matrix->setIntensity(intensity); - int orientation = Settings->display_rotate; - max7219_Matrix->setOrientation((LedMatrix::ModuleOrientation)orientation ); - AddLog(LOG_LEVEL_INFO, PSTR("MTX: MAX7291Matrix_init %dx%d modules, orientation: %d, intensity: %d"), LedMatrix_settings.modulesPerRow , LedMatrix_settings.modulesPerCol, orientation, intensity); - - //max7219_Matrix->test(); - AddLog(LOG_LEVEL_INFO, PSTR("MTX: display test")); + if(Settings->display_rotate <= 3) + { + max7219_Matrix->setOrientation((LedMatrix::ModuleOrientation)Settings->display_rotate ); + } + else + { + // default for most 32x8 modules + Settings->display_rotate = LedMatrix::ORIENTATION_UPSIDE_DOWN; + max7219_Matrix->setOrientation( LedMatrix::ORIENTATION_UPSIDE_DOWN ); + } + AddLog(LOG_LEVEL_INFO, PSTR("MTX: MAX7291Matrix_init orientation: %d, intensity: %d"), Settings->display_rotate, intensity); return true; } @@ -183,28 +197,38 @@ bool MAX7291Matrix_clock(void) { LedMatrix_settings.show_clock = XdrvMailbox.payload; if (ArgC() == 0) - XdrvMailbox.payload = 1; - if (XdrvMailbox.payload > 1) - { - LedMatrix_settings.timeFormat = "%H:%M"; - if(LedMatrix_settings.modulesPerRow > 6) - { - LedMatrix_settings.timeFormat = "%H:%M:%S"; - } XdrvMailbox.payload = 2; - } - else - { - LedMatrix_settings.timeFormat = "%I:%M"; - if(LedMatrix_settings.modulesPerRow > 6) + switch(XdrvMailbox.payload) { - LedMatrix_settings.timeFormat = "%I:%M:%S"; + case 0: + // no clock, switch to text mode + Settings->display_mode = 0; + return true; + case 1: + // 12 h clock + LedMatrix_settings.timeFormat = "%I:%M"; + if(LedMatrix_settings.modulesPerRow > 6) + { + LedMatrix_settings.timeFormat = "%I:%M:%S"; + } + Settings->display_mode = 1; + break; + case 2: + // 24 h clock + LedMatrix_settings.timeFormat = "%H:%M"; + if(LedMatrix_settings.modulesPerRow > 6) + { + LedMatrix_settings.timeFormat = "%H:%M:%S"; + } + Settings->display_mode = 1; + break; + default: + return false; } - XdrvMailbox.payload = 1; - } AddLog(LOG_LEVEL_DEBUG, PSTR("MTX: LedMatrix_settings.show_clock %d, timeFormat %s"), LedMatrix_settings.show_clock, LedMatrix_settings.timeFormat); + max7219_Matrix->clearDisplay(); MAX7291Matrix_showTime(); return true; } @@ -220,7 +244,7 @@ bool MAX7291Matrix_showTime() timeinfo = localtime(&rawtime); strftime(timeStr, 10, LedMatrix_settings.timeFormat, timeinfo); - max7219_Matrix->drawText(timeStr); + max7219_Matrix->drawText(timeStr, false); // false: do not clear desplay on update to prevent flicker return true; } #endif // USE_DISPLAY_MODES1TO5 @@ -254,7 +278,16 @@ bool Xdsp19(uint8_t function) result = max7219_Matrix->setIntensity(GetDisplayDimmer16()); break; case FUNC_DISPLAY_DRAW_STRING: - result = max7219_Matrix->drawText(dsp_str); + case FUNC_DISPLAY_SCROLLTEXT: + case FUNC_DISPLAY_SEVENSEG_TEXT: + Settings->display_mode = 0; // text mode + LedMatrix_settings.show_clock = 0; // disable clock mode + result = max7219_Matrix->drawText(XdrvMailbox.data, true); // true: clears display before drawing text + break; + case FUNC_DISPLAY_SEVENSEG_TEXTNC: + Settings->display_mode = 0; // text mode + LedMatrix_settings.show_clock = 0; // disable clock mode + result = max7219_Matrix->drawText(XdrvMailbox.data, false); // false: does not clear display before drawing text break; case FUNC_DISPLAY_SCROLLDELAY: result = MAX7291Matrix_scrollDelay();