Support for more than 8 matrix devices

This commit is contained in:
Michael 2021-11-29 15:27:55 +01:00
parent f2f6eba009
commit 5b3266e7ca
7 changed files with 129 additions and 586 deletions

View File

@ -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<maxDevices;i++) {
spiTransfer(i,OP_DISPLAYTEST,0);
//scanlimit is set to max on startup
@ -138,6 +138,15 @@ void LedControl::setRow(int addr, int row, byte value) {
spiTransfer(addr, row+1,status[offset+row]);
}
void LedControl::setRowLong(int row, byte *value)
{
if (row < 0 || row > 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<maxbytes;i++)
spidata[i]=(byte)0;
spidata[i]=(byte)OP_NOOP;
//put our device data into the array
spidata[offset+1]=opcode;
spidata[offset]=data;
@ -208,4 +217,18 @@ void LedControl::spiTransfer(int addr, volatile byte opcode, volatile byte data)
digitalWrite(SPI_CS,HIGH);
}
void LedControl::spiTransferLong(byte opcode, const byte* data) {
//Create an array with the data to shift out
for (int addr = 0; addr < maxDevices; addr++)
{
spidata[addr * 2 + 1] = opcode;
spidata[addr * 2] = data[addr];
}
//enable the line
digitalWrite(SPI_CS, LOW);
//Now shift out the data
for (int i = maxDevices * 2; i > 0; i--)
shiftOut(SPI_MOSI, SPI_CLK, MSBFIRST, spidata[i - 1]);
//latch the data onto the display
digitalWrite(SPI_CS, HIGH);
}

View File

@ -35,6 +35,10 @@
#include <WProgram.h>
#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:

View File

@ -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];
}

View File

@ -29,8 +29,7 @@
#include <LedControl.h>
#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;

View File

@ -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

View File

@ -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

View File

@ -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();