Nick001:
Was kann ich anders machen?
Erst programmieren lernen, dann programmieren.
Deine Bastelei an Deinem 8x8 Zeichensatz war sicher eine ziemliche Fleißarbeit, aber Nullen und Einsen kannst Du auch als Bits codieren statt als Bytes. Durch Bitcodierung würdest Du 8 Bits in einem einzigen Byte speichern können.
Also statt:
bool array_00[8][8]= {{0,1,1,0,0,1,1,0},
{1,0,0,1,1,0,0,1},
{1,0,0,1,1,0,0,1},
{1,0,0,1,1,0,0,1},
{1,0,0,1,1,0,0,1},
{0,1,1,0,0,1,1,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}};
Setze:
byte array_00[8]= {
B01100110,
B10011001,
B10011001,
B10011001,
B10011001,
B01100110,
B00000000,
B00000000
};
Damit wäre der Speicherbedarf dann schon mal auf ein Achtel reduziert. Und im Programmcode würden die Bits per bitRead()-Makro aus dem Byte herausgezogen werden.
Und Du könntest alle Deine 64 Zeichen in einem einzigen 2D Array codieren und unterbringen:
byte cArray[60][8]= ...
Das würde dann auch den Zugriff auf den Zeichensatz erleichtern, weil Du nicht auf 60 einzelne Arraynamen zugreifen brauchst, sondern mit einem Index von 0 bis 59 auf das gewünschte Zeichen innerhalb des definierten Arrays.
Und wenn Du eine Laufbandanzeige baust, dann brauchst Du sogar nur 12 verschiedene Zeichen:
- die Ziffern 0 bis 9
- den Doppelpunkt als Trennzeichen für Zifferngruppen
- das Leerzeichen als Trennzeichen zwischen verschiedenen Zeitangaben
(Allerdings käme dabei die Programmierung eines scrollenden Laufbands erschwerend hinzu.)
Dein Programm ist viel zu kompliziert und verbraucht nicht nur viel zu viel RAM, sondern es enthält auch viel zu viel Code. Sowohl die Datenstrukturen als auch die Programmlogik sind deutlich suboptimal gewählt.