Probleme mit oled i2c Anzeige

Servus Leute,

ich bin Zu zeit an einem Projekt worin ich mit einem Barcodescanner arbeite.
Ich habe es hinbekommen mit dem Barcodescanner zu scannen und die Daten auszulesen.

Das Problem aber ist, die Daten bzw. die Werte werden nur am Seriellen Monitor ausgelesen und nicht an der Oled I2C LCD (Die LCD Funktioniert perfekt, habe beispiel Codes verwendet).
Kann mir bitte jemand helfen (: ??
Woran könnte es liegen ??

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


Adafruit_SSD1306 display(4); //OLED_RESET 4


#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, change Adafruit_SSD1306.h");
#endif


long interval = 10000;  // Schaltet alle 10 Sekunden den Leser ein
long previousMillis = 0;
String Daten;
String alkohol = ("614229136845\r");
String wasser = ("2141204\r");
String ausweis = ("0241\r");

char Head1, Head2, Types, Lens, Adress1, Adress2, CRC1, CRC2, Dummy;

void setup() {
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //define I2C Adress
  display.clearDisplay();
  
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(25, 0);
  display.println("scannen");
  display.display();
  display.clearDisplay();

     
 
  Serial.begin(9600);
    while (!Serial) 
    {
    ;
    }
   
   
  
  Serial1.begin(9600);

    while (!Serial1) 
    {
    ;
    }

                     
}

void loop() {
   
if (Serial1.available()) {

    Head1 = Serial1.read();
    Head2 = Serial1.read();
    Types = Serial1.read();
    Lens = Serial1.read();
    Adress1 = Serial1.read();
    Adress2 = Serial1.read();
    Dummy = Serial1.read();
    CRC1 = Serial1.read();
    CRC2 = Serial1.read();

    Daten = Serial1.readString();
    Serial.println(Daten);

    
      if (Daten == wasser)
    {
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(25, 0);
        display.println("wasser");
        display.setTextSize(2);
        display.display();
        display.clearDisplay();
        delay(2000);
       
    }
    
     if (Daten == alkohol)
    {
        display.setTextSize(2);
        display.setTextColor(WHITE);
        display.setCursor(25, 0);
        display.println("Alkohol");
        display.display();
        display.clearDisplay();
        delay(2000);
    } 
      

/*
    else if ((Daten != wasser)||(Daten != alkohol))
    {   
          u8g2.clearBuffer(); 
          u8g2.setFont(u8g2_font_logisoso16_tr);
         u8g2.setCursor(10,30);
          u8g2.print("zikkim");
         u8g2.sendBuffer();         // transfer internal memory to the display
        delay(2000);
    }
*/
    
   if (Serial.available()) {
    Serial1.write(Serial.read());
  }
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis > interval) {

    previousMillis = currentMillis;
      display.setTextSize(2);
      display.setTextColor(WHITE);
      display.setCursor(25, 0);
      display.println("barcode scannen");
      display.display();
      display.clearDisplay();
      delay(2000);
    byte message[] = {0x7E, 0x00, 0x08, 0x01, 0x00, 0x02, 0x01, 0xAB, 0xCD };   // Sende Einschalten
    Serial1.write(message, sizeof(message));
    
    }
      delay(500); 
    }   
    
  }

Hallo,

läuft ein Beispielprogram aus der Lib mit dem Display. ?

Eigendlich liegt es daran das Du nichts anderes als "wasser" auf das Display schreibst, zumindest sehe ich das nicht. kannst Du auf dem Display das Wort "wasser" lesen ? dann ginge das ja schon mal. Nun must Du sicher einfach nur die Daten auf das Display schreiben.

Heinz

Hallo,

hab noch bemerkt das deine If abfragen so nicht funktionieren können.

Du hast die Daten in einem String objekt und willst den Inhalt auf einen Text abfragen dann muss der Text in Anführungszeichen stehen.

Zudem hast Du unten was mit 8Ug2 stehen das stammt sicher aus einem Sketch für eine andere lib. Wenn Du da was auf das Display ausgeben willst dann nimm dazu doch das was du oben auch genommen hast.

z.B
display.println(daten);

hier mal eine if Abfrage Beispiel.

String daten = "wasser";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

  if (daten == "wasser") {
    Serial.println(daten);
    //display.println(daten); für das Display
  }
else{
  Serial.println("nicht wasser");
  //display.println("nicht wasser");
}
}