Moin,
für den fortgeschrittenen Entwickler mag meine Frage profan klingen, aber ich verzweifele gerade an einer wahrscheinlich banalen Aufgabe.
Ich möchte über einen Arduino NANO ein WS2812 16x16 LED Matrix Board derart ansteuern, dass bis zu zwei Ziffern (dynamisch) gleichzeitig und vollständig angezeigt werden.
Diverse Libraries sollen das können, allerdings fehlen überall Beispiele für eine derart profane Aufgabe.
Den besten Versuch konnte ich noch mit der Adafruit_NeoMatrix Library erzielen. Allerdings gibt es da nur zwei verschiedene Schriftarten, die eine zu klein, die andere zu breit.
Da ich nur die Ziffern 0-9 benötige, hab ich mir schon mal einen Font entsprechend angepasst und im Adafruit_Gfx/Fonts Ordner abgelegt. Der lässt sich auch fehlerfrei mit compilieren, das ist nicht mein Problem.
Ich hab irgendwo einen Beispielcode gefunden, der mit
matrix.setFont(Fontname);
den Font umstellt. Das läuft bei mir aber direkt auf einen Compiler-Fehler.
Ich brauche auch keine Laufschrift, kein BlinkiBlinki oder sonst was. Und da ich kein Programmierer bin, brauche ich leider auch immer etwas, wo dran ich mich lang hangeln kann.
Vielleicht kann mir ja jemand mit einem Codeschnipsel oder einem Link zu einem einfachen Beispiel geben, mit dem ich weiter machen kann?!
Anbei mal der Adafruit_Matrix Code, mit dem ich bisher die besten Ergebnisse erziele:
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <Fonts/DSEG14_Modern_Regular_16Bitmaps.h>
#define PIN 6
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(16, 16, PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
NEO_GRB + NEO_KHZ800);
const uint16_t colors[] = {
matrix.Color(247, 20, 210), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };
void setup() {
matrix.begin();
matrix.setTextWrap(false);
matrix.setBrightness(10);
matrix.setTextColor(colors[0]);
matrix.setTextSize(2);
// matrix.setFont(&DSEG14_Modern_Regular_16Bitmaps);
}
int x = matrix.width();
int pass = 0;
void loop() {
int cnt = 0;
for (int cnt = 0; cnt <= 39; cnt++) {
matrix.fillScreen(0);
matrix.setCursor(0, 1);
matrix.print(cnt);
if(--x < -36) {
x = matrix.width();
if(++pass >= 3) pass = 0;
matrix.setTextColor(colors[pass]);
}
matrix.show();
delay(100);
}
}
Die Zeile, in der ich versuche die Schriftart zu ändern, ist auskommentiert. Ich hab mir auch so was wie FastLED und LEDText angeschaut. Komme aber mit deren Beispielen und der jeweiligen Doku nicht weiter, da ich die tatsächliche Syntax hinter den Befehlen nicht kapiere und die Beispiele wieder mal komplett mit für mich nutzlosem Zeug überfrachtet sind.
Dieses "keep it simple" scheint bei der Darstellung von Text nicht sonderlich beliebt zu sein.
Gruß
Sven