LCD - Display zeigt nur schwarze Balken

Hallo,

ich habe dieses Display schon erfolgreich genutzt. Jedoch jetzt will dieses nun nach einer Weile nichts außer schwarze Balken anzeigen, bei gleicher Verkabelung. Kabel hab ich vorsichtshalber auch schon getauscht. Kein Erfolg.

Es gibt im Forum viele Threads zu diesem Thema aber keine Antwort konnte mir weiterhelfen. !

`[code]
#include<Wire.h>

void setup(){
Wire.begin();
Serial.begin(115200);
Serial.println("I2C Scanner ist bereit.");
Serial.println();
}

void loop() {
scanI2C(100000);
scanI2C(400000);
// scanI2C(1000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
// scanI2C(3400000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
// scanI2C(5000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt

Serial.println("****************************");
Serial.println();
delay(3000);
}

void scanI2C(long frequency){
String normal = "standard mode (100 kHz):";
String fast = "fast mode (400 kHz):";
String fastPlus = "fast mode plus (1 MHz):";
String highSpeed = "high speed mode (3.4 MHz):";
String ultraSpeed = "ultra fast mode (5.0 MHz):";
String defaultStr = " !!!!! Unzulässige Frequenz !!!!!";
bool error = true;
bool addressFound = false;

Serial.print("Scanne im ");[code]
#include<Wire.h>

void setup(){
Wire.begin();
Serial.begin(115200);
Serial.println("I2C Scanner ist bereit.");
Serial.println();
}

void loop() {
scanI2C(100000);
scanI2C(400000);
// scanI2C(1000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
// scanI2C(3400000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
// scanI2C(5000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt

Serial.println("****************************");
Serial.println();
delay(3000);
}

void scanI2C(long frequency){
String normal = "standard mode (100 kHz):";
String fast = "fast mode (400 kHz):";
String fastPlus = "fast mode plus (1 MHz):";
String highSpeed = "high speed mode (3.4 MHz):";
String ultraSpeed = "ultra fast mode (5.0 MHz):";
String defaultStr = " !!!!! Unzulässige Frequenz !!!!!";
bool error = true;
bool addressFound = false;

Serial.print("Scanne im ");
switch(frequency){
case 100000:
Serial.println(normal);
break;
case 400000:
Serial.println(fast);
break;
case 1000000:
Serial.println(fastPlus);
break;
case 3400000:
Serial.println(highSpeed);
break;
case 5000000:
Serial.println(ultraSpeed);
break;
default:
Serial.println(defaultStr);
break;
}

Wire.setClock(frequency);
for(int i=1; i<128; i++){
Wire.beginTransmission(i);
error = Wire.endTransmission();
if(error == 0){
addressFound = true;
Serial.print("0x");
Serial.println(i,HEX);
}
}
if(!addressFound){
Serial.println("Keine Adresse erkannt");
}
Serial.println();
}
[/code]
switch(frequency){
case 100000:
Serial.println(normal);
break;
case 400000:
Serial.println(fast);
break;
case 1000000:
Serial.println(fastPlus);
break;
case 3400000:
Serial.println(highSpeed);
break;
case 5000000:
Serial.println(ultraSpeed);
break;
default:
Serial.println(defaultStr);
break;
}

Wire.setClock(frequency);
for(int i=1; i<128; i++){
Wire.beginTransmission(i);
error = Wire.endTransmission();
if(error == 0){
addressFound = true;
Serial.print("0x");
Serial.println(i,HEX);
}
}
if(!addressFound){
Serial.println("Keine Adresse erkannt");
}
Serial.println();
}
[/code]`

Hast Du mal ausgiebig an der Kontrasteinstellung nach beiden Seiten gedreht?

Gruß Tommy

Ja, es verändert sich nur die Intensität der Balken. Text kommt leider keiner

Da fehlt ein init - Kontrast ist ok.
Zeig mal Deinen Code.

Da wirds zu finden sein.
(Unbedingt die lib nennen, die du nutzt)

Bibliotheken sind die wire.h und LiquidCrystal

Du solltest Texte in Codetags (Button </>) einstellen und nicht als Bild.

Gruß Tommy

Kein Plan wie das geht, ist mein erster Beitrag hier. Sorry..

Erklär ich noch.
Las mal bitte diesen Code laufen und copier aus dem Seriellen Monitor die Ausgabe hier rein:

#include<Wire.h>

void setup(){
  Wire.begin();
  Serial.begin(115200);
  Serial.println("I2C Scanner ist bereit.");
  Serial.println();
}

void loop() {
  scanI2C(100000);
  scanI2C(400000);
//  scanI2C(1000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
//  scanI2C(3400000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
//  scanI2C(5000000); // nur aktivieren, wenn der Microcontroller diese Frequenz unterstützt
  
  Serial.println("****************************");
  Serial.println();
  delay(3000);
}

void scanI2C(long frequency){
  String normal = "standard mode (100 kHz):";
  String fast = "fast mode (400 kHz):";
  String fastPlus = "fast mode plus (1 MHz):";
  String highSpeed = "high speed mode (3.4 MHz):";
  String ultraSpeed = "ultra fast mode (5.0 MHz):";
  String defaultStr = " !!!!! Unzulässige Frequenz !!!!!";
  bool error = true;
  bool addressFound = false;

  Serial.print("Scanne im ");
  switch(frequency){
    case 100000:
      Serial.println(normal);
      break;
    case 400000:
      Serial.println(fast);
      break;
    case 1000000:
      Serial.println(fastPlus);
      break;
    case 3400000:
      Serial.println(highSpeed);
      break;
    case 5000000:
      Serial.println(ultraSpeed);
      break;
    default:
      Serial.println(defaultStr);
      break;
  }
  
  Wire.setClock(frequency);
  for(int i=1; i<128; i++){
    Wire.beginTransmission(i);
    error = Wire.endTransmission();
    if(error == 0){
      addressFound = true;
      Serial.print("0x");
      Serial.println(i,HEX);
    }
  }
  if(!addressFound){
    Serial.println("Keine Adresse erkannt");
  }
  Serial.println();
}

[Erklärung:]
In der Arduino-IDE auf BEARBEITEN - FÜR FORUM KOPIEREN klicken
Dann in Deinem Text einfach mit der rechten Maustaste klicken und EINFÜGEN mit links.

Texte aus dem Seriellen Monitor kopierst Du indem Du den markierst und mit STRG-C übernimmst.

Im Foren-Editor dann auf das Symbol </> klicken und

tippe oder füge den Code hier ein

genau das machen, was dann da steht :wink: - mit STRG-V

1 Like

nein, du verwendest die LiquidCrystal_I2C. Soviel erkennt man am Bildschirmfoto.
Bitte mach ab jetzt nur mehr korrekte Angaben.

Schritt 1: hier lesen wie man Code postet https://forum.arduino.cc/t/wie-man-dieses-forum-benutzt-bitte-lesen/902274/2
Schritt 2: Code gem. Anleitung posten.
Schritt 3: mit einem I2C Scanner prüfen, ob die Verbindung zum PCF Expander funktioniert (und ob der wirklich auf 0x27 reagiert) - findest du als Beispiel in deinem Wire Verzeichnis.
Schritt 4: gepostetes Bild überprüfen ob wir da erkennen können wohin die 4 Kabel vom Expander auf den Uno gehen. Siehst du am Bild wo jedes einzelne Kabel hingeht? Ich nicht.
Schritt 5: Bilder zeigen worauf wir die Verlötung des PCF Expanders mit dem LCD erkennen können.

Hat nix mit deinem aktuellen Problem zu tun, aber deinen Aufbau mit einer 230V Steckdose und dem Arduino so dicht zusammen, ist aus meiner Sich höchst Leichtsinnig.
Sorry, aber das solltest du ändern und könnte zu einem neuen Problem kommen.

Nö. In dem Bild ist das doch ok.
Da ist Isolierung schick und Leitungsmaterial passt auch.
Na gut, Hülsen sind nicht zu sehn. Aber was ich grad gestern von nem Handwerker gesehen habe, ist das doch blendend :wink:

Interressant wirds, was da rechts nicht auf dem Foto ist. Aber das will ich nicht wissen.

Ja klar....
Ich bleibe dabei, auch weil es kein fachlich Korrekter Aufbau ist.
Daher nochmal höchst leichtsinnig.

Das mag jeder anders sehen.

So richtig?

Was würdest du daran verbessern bzw. warum ist mein Aufbau nicht fachlich?

Hm.Da oben in #1 steht jetzt:
`[code]
Da ist das `zuviel.
Ganz unten auch.
Aber Du sollst nicht meinen Code, sondern Deinen Code einfügen :slight_smile:

  1. Darfst solche Schaltungen (230Volt) durchführen .
  2. Ich würde immer Schaltungen mit 230V komplett von Schaltungen mit dem Arduino trennen. Und ja, ich darf das.
  3. Du verwendest an 230V Litze ohne Aderendhülsen.

Darauf habe ich gewartet.
Nenne mir eine Norm, wo das gefordert wird.
Und jetzt komm nicht, das ich dass geschrieben hätte. Ich habe nur darauf hingewiesen, das ich keine sehe. Sie sind weder gefordert noch verpflichtend.

Sorry für dich, dass du darauf warten musstest.
Von einer Norm habe ich nichts geschrieben.

Dann nenne mir die fachliche Voraussetzung, wenn es keine Norm ist.