Wie ein LCD ansteuern ; LMC 1602 I2C ; Tutorial ; Sketch

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?!?!

:disappointed_relieved: :disappointed_relieved: :disappointed_relieved: :disappointed_relieved:

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! :slight_smile: :slight_smile: