Go Down

Topic: Problem mit Wemos D1 mini und LCD 2004a (Read 87 times) previous topic - next topic

buschmann82

Oct 25, 2020, 04:58 pm Last Edit: Oct 25, 2020, 05:19 pm by buschmann82 Reason: vergessen fürs Forum einzufügen
Hallo Leute,

bin kurz vorm Verzweifeln. Ich möchte mit dem LCD in Intervallen eine Meldung ausgeben/aktualisieren.

In der Setup-Routine funktioniert alles einwandfrei, aber in der Loop() und den Methoden die ich von dort aufrufe tut sich am LCD gar nichts mehr. Die Variable ist global und bekomme vom Compiler auch keine Meldung dass sie nicht deklariert wäre.

Was mache ich falsch?

Code: [Select]
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,20,4);

void setup()
{
  // Funktioniert wie es soll

  lcd.init();
  lcd.clear();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Display funktioniert");
  lcd.setCursor(0,1);
  lcd.print("einwandfrei");
}

void loop()
{
  meineFunktion();
  delay(5000);
}

void meineFunktion()
{
  Serial.print("Anweisung wird ausgeführt");

  // Anweisungen werden ignoriert
  // OHNE Fehler, dass lcd nicht deklariert wäre.
  // Wird einfach ignoriert als wären sie auskommentiert. :-(

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Anweisungen werden");
  lcd.setCursor(0,1);
  lcd.print("ignoriert");
  
  Serial.print("Anweisung ebenfalls ausgeführt");
}

Tommy56

Hänge mal zum Testen ein delay(1000); in den loop hinter meineFunktion();
Du knallst das Display zu, das kommt nicht hinterher und Deine Augen auch nicht. Da wird gelöscht, bevor Du was gesehen hast.

Später kannst Du ja dann eine Zeitsteuerung mit millis() bauen oder nur wenn sich etwas ändert den Inhalt ändern.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

buschmann82

Hab ich stehen, sorry hab ich vergessen hier reinzuschreiben. Das Display soll eigentlich alle 5 Sekunden aktualisiert werden.

Tommy56

Wie sollen wir uns Deines Problems annehmen, wenn Du uns nicht den Sketch zeigst, der es verursacht?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

buschmann82

Weil er mehrere 1000 Zeilen lang ist und auf 15 Dateien verteilt. Daher habe ich den Code auf das eigentliche Problem reduziert! ;-)

Tommy56

Was sagt Dein Serieller Monitor?

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

buschmann82

Der sagt, dass alle Anweisungen vor und nach den lcd-Befehlen ausgeführt werden! Es ist, als wäre die Variable lcd nach Beenden der setup() durch ein anderes Objekt mit den gleichen Funktionen ersetzt worden die aber alle leer sind! :-(

HotSystems

Warum löschst du dein Display bei jedem Durchlauf ?

Evtl. spielt dir der Compiler einen streich.

Setze deine Funktion mal vor das Setup.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

buschmann82

Hab ich schon versucht, kein Effekt. Die Meldungen erscheinen ja auch im seriellen Monitor. Die Funktion wird also korrekt aufgerufen, aber die lcd-Anweisungen werden einfach ignoriert!

HotSystems

Verstehe ich das richtig, du bekommst keine Fehlermeldungen ?
Hast du die in den Einstellungen auch eingeschaltete bzw. angehakt ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up