Display

Hallo
Ich möchte eine bestimmte Nachricht auf meinem Display angezeigt bekommen, dies funktioniert ja auch teilweise. Aber wenn die Nachricht einmal durchgelaufen ist sollte es mir die Nachricht noch einmal anzeigen, solange bis die Zeit vorbei ist. In meinem Fall wird die distance die ganze Zeit angezeigt bis die Zeit abgelaufen ist. Vermute den Fehler in der for-Schleife.

Vielleicht kann mir ja jemand von eich helfen.
LG

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

int zeilen = 16;
int spalten = 2;
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, zeilen, spalten); //Objekt erstellen

String messageToScroll = "Die Entfernng bis zum Ziel betraegt noch ";
double dist = 2.5;

void setup() {
  Serial.begin(9600);

  lcd.init();
  lcd.backlight();
}

void loop() {
  lcd.setCursor(0, 0);
  scrollText(messageToScroll, 250, zeilen);
  delay(1000);
  lcd.clear();
}
void scrollText(String message, int delayTime, int zeilen) {
  double distance = dist;
  for (int i = 0; i < zeilen; i++) {
    message = message + " " + distance + "m";
  }
 
  for (int pos = 0; pos < message.length(); pos++) {
    lcd.setCursor(0, 0);
    lcd.print(message.substring(pos, pos + zeilen));
    delay(delayTime);
  }
}

hm, der Code macht imho genau das was zu codiert hast

was erwartest du dir von dieser Zeile

message = message;

und warum zwei getrennte For schleifen?

Wäre es nicht sinnvoller, den Fixtext + Variable + m in einer for auszugeben? Aktuell schaut das ja am LCD bescheiden aus.

Das mit den zwei for Schleifen war für mich die einfachste Lösung, deshalb die zwei.

Wenn ich das richtig verstanden habe, würde der Text nicht durch das Display bewegen oder?

beschreibe mal deinen Ablauf.

Wie oft bzw. wie lange soll den dein Scrolltext durchlaufen?
Was soll danach passieren?

du arbeitest ja derzeit mit den Aufrufen im Loop, daher wird das endlos wiederholt.

außerdem das ist auch eher merkwürdig

int zeilen = 16;
int spalten = 2;

hat dein LCD wirklich 16 Zeilen?