Ich bin kein Experte für Wortuhren und beziehe mich auf meinen Beitrag zu einem vergleichbaren Thema.
const uint8_t Es[] = {0, 1};
const uint8_t Ist[] = {3, 4, 5};
...
const uint8_t Acht[] = {77, 78, 79, 80};
...
const uint8_t Halb[] = {44, 45, 46, 47};
Die Zahlen sind die Nummern der Pixel eines LED-Streifen, das brauchst Du anders.
struct Lage
{
byte zeile;
uint16_t bits;
};
Lage Es = {0, 0b1100000000000000};
Lage Ist = {1, 0b0011100000000000};
...
Lage Acht = {3, 0b0000001111000000};
...
Lage Halb = {1, 0b0000000111100000};
Der Funktion SwitchLED kann man die ganze Struktur übergeben:
SwitchLED(Es);
Die Funktion nimmt die Struktur entgegen:
void SwitchLED(const Lage lage)
{
Serial.print( lage.zeile );
Serial.print( '\t' );
Serial.print( lage.bits, HEX );
}
Nur mal so als ungetestete Idee. Geht das in die Richtung Deiner Fragestrellung?
Wie MAX7219 und Deine Uhr zusammenfinden sollen, erschließt sich mir leider nicht.