Ich gebe jede Sekunde einmal Zeit und Datum aufs OLED Display aus. Klappt eigentlich, bis auf das Problem, dass man ja die Zeile auf die man geänderte Ziffern ausgibt, erst mal löschen muss. Hier ist der Programmteil:
void Zeitausgabe() {
tm local;
getLocalTime(&local);
oled.setFont(u8g2_font_6x12_tr); // Kleine Schrift 6x12
oled.setCursor(10, (1 * 10));
oled.print(&local, " Datum: %d.%m.%y");
// Hier das Problem. Die Zeitausgabe
oled.setCursor(10, (2 * 10));
oled.print(" "); // 16 Zeichen löschen
oled.sendBuffer();
oled.setCursor(10, (2 * 10));
oled.print(&local, " Zeit : %H:%M:%S"); // 16 Zeichen Zeit schreiben
oled.sendBuffer();
Das macht alles Wunderbar, aber das Löschen mit 16 Leerzeichen scheint nicht zu klappen. Denn wenn schmale Zahlen wie eine “1” hinten bei den Sekunden, oder auch bei den Minuten kommen, sieht man, dass die Leerzeichen offenbar nicht alles darunter überschreiben.
Also ich gebe immer erst eine Leerzeile ein, sende den Buffer und gebe dann die Uhrzeit ein und sende wieder den Buffer. Klappt trotzdem nicht. Wenn ich anstelle der 16 Leerzeichen, 16 Unterstriche mache, reichen die genau bis zum Ende der Zeile, ich sehe also dass ich weit genug lösche. Trotzdem erscheinen dann oben neben einer 1 z.B. weiße Überpleipsel, von was weis ich was. ![]()
Man muss doch nicht das ganze Display jede Sekunde Löschen, um eine saubere Anzeige zu haben ?
Franz