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

Ich habe das ganze jetzt mal so umgeschrieben!
Falls das nicht gut geschrieben, oder umständlich ist, bin ich für Kritik dankbar! :slight_smile:

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

#define I2C_ADDR    0x27                         
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7


LiquidCrystal_I2C	lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

// Variablendeklaration

int Echo = 12 ;
int Trigger = 11 ;

int Abstand ;
int Zeit ;

int Starttaster = 10 ;

int Schalterzustand = 0 ;
int Schalterzustand_old = 0 ;
int Start = 0 ;

int interval = 500 ;
int previous_millis = 0 ;

void setup()
{ 
  
  Serial.begin (9600) ;
  
  
  lcd.begin (16,2); 

  
  // Beleuchtung des Displays einschalten
  
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.home (); // go home

  pinMode (Echo, INPUT) ;
  pinMode (Trigger, OUTPUT) ;
  



   
}

void loop()
{ 
  
  // Kontrolle ob Änderung des Eingangs
  
  Schalterzustand = digitalRead (Starttaster) ;
  
  if ((Schalterzustand == 1) && (Schalterzustand_old == 0))
    {
      Start = 1 - Start ;
      delay (30) ;
    }
  
  // Messung starten
  
  if (Start ==1)
    {
      
      digitalWrite (Trigger, LOW) ;
      delayMicroseconds (2) ;
      digitalWrite (Trigger, HIGH) ;
      delayMicroseconds (5) ;
      digitalWrite (Trigger, LOW) ;
  
      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) ;
          
        }


    }
    
  else
    {

      lcd.setCursor (0,0) ;
      lcd.print ("Fuer Messung                 ") ;
      lcd.setCursor (0,1) ;
      lcd.print ("Start druecken               ") ;
    }
    
  Schalterzustand_old = Schalterzustand ;
  

}

Das ganze funktioniert auch, jedoch fängt das Display nach ca. 40 Sekunden an zu flackern und die Werte ändern sich viel schneller, als sie sollten. Habe mal ein Video angehangen!

IMG_0136.avi (1.97 MB)