Benutze ein 16*2 LCD Display und kann in der 2. Zeile den Cursor nicht auf die Anfangsposition setzen. Geschrieben wird in der Regel beginnend von Pos. 7. Nach einem Restart auch auf Pos. 3.
Für die erste Zeile funktioniert alles. Kann als neuer Benutzer Datei nicht hochladen, deshalb diesr Weg.
void LCD_Message_0x3F_Small::print_LCD_Message (String LCD_Msg_Line_1, String LCD_Msg_Line_2) {
LiquidCrystal_I2C lcd(I2C_Address_LCD, LCD_Colums_16, LCD_Rows_2);
uint8_t l; // temp. Variable zum Zentrieren
String s; // temp. Variable zum Zentrieren
// Ausgabe untere Zeile
lcd.backlight();
if (LCD_Msg_Line_2 == ""){
Serial.println("Zeile 1 - Nichts tun");
}
else{
Serial.println("LCD_Msg_Line_2");
lcd.setCursor(0,1 );
lcd.backlight();
s =LCD_Msg_Line_2;
l = LCD_Colums_16 - s.length();
if (l <= 0){ // werden nur die ersten 16 Zeichen des Strings ausgegeben
lcd.print(s); // Ausgabe untere Zeile
Serial.println(s);
}
else{
lcd.setCursor(l/2,1 );
lcd.print(" "); // lösche untere Zeile - leerzeichen
lcd.print(s); // Ausgabe untere Zeile
Serial.println(s);
};
};
}
Vllt. hat jemand eine Idee.
Danke und schönen Montag.
Zeige ales, hier kann man nicht sehen um was es geht. Wen l/2 wird keine Ganzzahl werschiebt sich um 1
3÷2 wird im Display in pos 1,1 geschrieben wen so ist must man "Runden"
Je nach Controler auf dem LCD können die Speicherbereiche unterschiedlich sein.
Mach mal ne Schleife
, schieb immer 1 Zeichen raus und schau, wann die 2. Zeile drankommt.
wird für die 1. zeile verwendet, die habe ich nicht mit gepostet, wegen des platzes. Daher weiß ich ja, dass es für die 1. Zeile geht. Code ist ja nur anzupassen.
Die Objekterzeugung resultiert aus dem stufenweise testen, wird später noch entfernt. Wenn auch nicht schön, sollte aber nicht schädlich sein.
3/2 kann in pos 1,1 geschrieben werden. das runden war mir egal, da es nur Auswirkungen um eine Stelle hat. Code konte ich nicht posten, muss der Mod mir erst erlauben.
Ich weiß nur nicht, ob die Funktion "lcd.setCursor" Kommazahlen akzeptiert.
Ansonsten einfach in eine Festzahl (Integer) umwandeln.
Aus Erfahrung kann ich dir sagen, das es ist wie bei einer Frau. Schwanger oder nicht Schwanger. Ein Zwischending gibt es nicht.
Dann spinnt beim ersten Befehl das ganze Display, wenn da eine fehlerhafte Lötstelle ist.
Du sollst nicht auf einem Taschenrechner irgendwas eintippen, sondern lernen wie die Sprache funktioniert die Du benutzt!
Hast Du nicht erst gestern geschrieben, über welches Alter und Jahrzehnte Wissen Du verfügst?
Labere weiter die TO voll mit "wie funktioniert ein Forum".
Ich habe den selben Code bei mir laufen und er funktioniert. Er einige Unterschied ist, das der Text den ich Zentriere grundsätzlich 4 Stellig ist. Weshalb ich das Problem nicht habe.
Oh, was nu? Bist doch sonst nicht so weich gespült.
Immerhin habe ich nichts von "wie ein Forum funktioniert" geschrieben. Du scheinst zu fiebern. Anders ist das nicht zu erklären.
Du hast irgendwie Fantasien.
Zum Glück weiss der TO bereits wie das geht, da muss ich also nix erklären.
Nimm etwas Baldrian und eine Auszeit.
Ich mache mir Sorgen um Deine Herzkranzgefäße.
(Du weisst doch - das wird nicht besser mit zunehmendem Alter)
Dann schreib doch eine Testfunktion mit nur einem String. (Die geht? aber nur wenn sie in Zeile 1 schreiben soll?) Dann mach einen kompletten, aber minimalen Sketch.
Oft verschwindet der Fehler (oder tritt erstmals auf) bei einer Änderung, wo du es nicht vermutet hättest. Kannst dann gern auch selbst die Lösung präsentieren