Ja klar, war vielleicht etwas dürftig geschildert.
Also, wenn keine Messung statt findet, sprich die Variable "Start" nicht den Wert 1 hat, läuft im Loop-Teil ja nur die "else-Schleife":
else
{
// Anzeige wenn keine Messung statt findet
lcd.setCursor (0,0) ;
lcd.print ("Fuer Messung ") ;
lcd.setCursor (0,1) ;
lcd.print ("Start druecken ") ;
// schaltet Displaybeleuchtung nach 20 Sekunden Untätigkeit ab
if (millis() - Wartezeit > 20000)
{
Wartezeit = millis() ;
lcd.setBacklight(LOW);
}
// Inhalt des Displays nach links durchlaufen lassen
if ((millis() - Wartezeit_lcd > interval2))
{
Wartezeit_lcd = millis() ;
lcd.scrollDisplayLeft() ;
}
}
So, und da möchte ich, dass der Inhalt des Displays mit lcd.scrollDisplayLeft() immer von rechts nach links durchläuft. Das funktioniert auch.
Wenn ich jedoch die Messung starte, möchte ich, dass der Inhalt des Displays nicht mehr durchläuft, sondern in beiden Zeilen jeweils an der 0. Stelle beginnt. Jedoch wird der Inhalt dann gerade da angezeigt, wo der vorherige Inhalt sich grad beim Durchlaufen befand, also mittendrin, oder außerhalb des Displays...
Obwohl ich mit lcd.setCursor doch wieder für beide Zeilen die Anzeigepunkte definiere?!?!
![]()
if (Start ==1)
{
Wartezeit = millis() ;
lcd.setBacklight (HIGH) ;
// Ansteuerung des Ultraschallensors
digitalWrite (Trigger, LOW) ;
delayMicroseconds (2) ;
digitalWrite (Trigger, HIGH) ;
delayMicroseconds (5) ;
digitalWrite (Trigger, LOW) ;
// Zeit in us, bis Ultraschallsignal empfangen wird auslesen
Zeit = pulseIn (Echo, HIGH) ;
// Abstandswert in mm berechnen
Abstand = (Zeit * 0.343) / 2 ;
lcd.setCursor (0,0);
lcd.print("Abstand in mm");
// Wert auf LCD alle 500 ms aktualisieren
if ((millis() - previous_millis > interval))
{
previous_millis = millis() ;
lcd.setCursor (0,1);
lcd.print(" ");
lcd.setCursor (0,1);
lcd.print(Abstand);
Serial.println (Abstand) ;
}
}
Ich hoffe ich konnte das Problem so verständlich machen!
![]()