LCD16*2 wird von korrekter Anzeige zur Japanischen Laufschrift

Hallo zusammen,
die Ausgabe meines LCD wird von korrekt nach ca. 4sek zur Japanischen Buchstabensalat Laufschrift.
Könntet ihr mir da eventuell helfen?

Verwenden tue ich ein Pollin LCD 16*2 TC1602A im 4-Bit Mode.
//habe auch schon Testweise mal die Umlaute und das °-Zeichen entfernt, passiert trotzdem.

schonmal vielen Dank für jede Hilfe.

#include <LiquidCrystal.h>

// LiquidCrystal(RS, ENABLE, D4, D5, D6, D7);
LiquidCrystal lcd(11, 12, 4, 5, 8, 10);

  
void setup() {
  Serial.begin(9600);
  analogReference(DEFAULT);
  pinMode(A0, INPUT);

//LCD Init und check ob Lötkolben/Thermoelemt angeschlossen ist;
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("BOOTING -- Check");
  lcd.setCursor(0,1);

}

void loop() {
  
// Sollwert Messung Potentiometer;
int potiSoll = analogRead(A1);
int temperaturSoll = map(potiSoll, 0, 1023, 150, 450);
  Serial.print("Solltemperatur: ");
  Serial.println(temperaturSoll);
  
//Konstanten zur Berechnung der Thermoelement Temperatur;
  const int thAmplification = 166;              //Verstärkung Thermoelement Messverstärker 6k/1M=166,667
  const float thmVperDigitTypeJ = 0.054423333;  //Temperaturkonstante - °C/mV
  const int thCalibration = 0;                  //0°C-100°C Kalibrierung/Abgleichsfaktor

// Erhöhen der ADC-Sammpling Rate;
// Bitmath Register verändern;

// Erstellen des ADC-Mittelwerts zur Anzeige-Temperatur-Stabilisierung  ===> WORKING;
long thAmpMW1000 = 0;
long thAmpMWadd;

  for (int count1 = 0; count1 < 1000; count1++){
    long thAmpMW = analogRead(A0);
    thAmpMWadd = thAmpMWadd + thAmpMW;
  }    
  thAmpMW1000 = thAmpMWadd / 1000;
  
float thTempJformel = (((thAmpMW1000 * (5.0 / 1023.0)) / thAmplification) * 1000) / thmVperDigitTypeJ;  

//Serielle Testwertausgabe;  
  Serial.print("ADC A0 Wert= ");
    int thAmp = analogRead(A0);
  Serial.println(thAmp);  
  Serial.print("ADC A0 Mittelwert aus 1000 Interationen: ");
  Serial.println(thAmpMW1000);  
  Serial.print("Temperatur Lötspitze TypJ= ");
  Serial.print(int(thTempJformel));
  Serial.println("°C"); 
 
  delay(1000);                                  //Displayauslöseverzögerung
Serial.write(27);                               //clear Serial Monitor mit char(27)ESC



// ENDE der Ausgabe und der ADC-Auswertung
// Nulldurchgangserkennung

//Ansteuerung LCD für Betrieb 16*2;
lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Solltemp:  ");              //11digits
  lcd.setCursor(11,0);
  lcd.print(temperaturSoll);             //3digits
  lcd.setCursor(14,0);
  lcd.print("°C");                      //2digits

  lcd.setCursor(0,1);
  lcd.print(" Isttemp:   ");             //11digits
  lcd.setCursor(11,1);
  lcd.print(int(thTempJformel));        //3digits
  lcd.setCursor(14,1);
  lcd.print("°C");                      //2digits
delay(25);


// BEGINN Ansteuerung Triac




  
}

// BEGINN Ansteuerung Triac

Hast Du das schon angeschlossen?

Grüße Uwe

Solche Anzeigen treten bei gestörter Übertragung auf. Entweder hast du schlechte Kontakte oder Lötstellen oder ein Gerät stört hinein. Beispiel wäre ein Triac mit Last oder ein Relais.

Nein Triac, als auch dessen Ansteuerung sind noch nicht verdrahtet.
Das ist im Moment der gesamte Code. Also fallen Störsignale von daher flach.

Das ganze istjedoch auf nem Breadboard aufgebaut. Hmm werde mal vorsichtshalber alle LCD betreffenden Leitungen neu verdrahten.

Gibt es den Code technisch bis dato was auszusetzen?

Störanfälligkeit kommt nicht vom Sketch. Gut ist er aber auch noch nicht. Schau dir mal BlinkWithoutDelay an. Da kannst du dann jede Sekunde einmal das LCD neubeschreiben, ohne dass dein Arduino pausiert

Vielen Dank. Das Problem waren tatsächlich die Breadboard Kontakte. Habe mir nun nen direkten Breakoutstecker/Buchsen Adapter gecrimpt mit PSK Buchsen von Reichelt um das Display anzustecken.

Nun funktioniert es tadellos.

Danke übrigens auch für den Tipp mit der "millis" Funktion anstatt delay. Werde das auf jeden Fall noch implementieren.

Danke und grüße