INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
09.12.2018, 17:47 (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2018 17:59 von magnum1795.)
Beitrag #9
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
Das ganze läßt mir einfach keine Ruhe. Habe jetzt doch noch etwas getestet. Diesmal aber mit den Arduino Uno. Habe diesen code verwendet und nur das Display mal angeschlossen. Uno ist nur mit USB Kabel angeschlossen.

Damit funktioniert nun zwar der loop, aber Temperatur
Luftfeuchte
Luftdruck
werden richtig angezeigt
Bei der 4 Zeile werden nur die ersten zwei Buchstaben einigermaßen richtig angezeigt, ersten zwei Buchstaben (Ta) flackern leicht, ab upunkt flackert die Anzeige extrem stark.
Angeschlossen ist das ganze am Uno
GND > GND
VCC >5 Volt am Uno
SDA > A5 am Uno
SCL > A4 am Uno

was sagt uns das nun? sollte doch dann eigentlich auch am ESP8266 gehen, oder?
Ach ja, warum flackert die unterste Zeile so extrem?

Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//LiquidCrystal_I2C lcd(0x27);  // Set the LCD I2C address
LiquidCrystal_I2C lcd(0x27,20,4);


void setup()
{
     lcd.begin();
     lcd.setCursor(1,0);
     lcd.print("Wetterstation V1.0");
     lcd.setCursor(0,1);
     lcd.print("Temp. Luftf. Luftd.");
     lcd.setCursor(4,2);
     lcd.print("im Saunaraum");
     lcd.setCursor(1,3);
     lcd.print("Lese Sensoren aus");
    
     lcd.backlight();
     delay(150);
    
     lcd.noBacklight();
     delay(150);

     lcd.backlight();
     // finish with backlight on
     Serial.begin(115200);
     delay [10];
}

void loop()
{
lcd.clear();
     lcd.setCursor ( 0, 0 );
     lcd.print("Temperatur");
     lcd.setCursor ( 0, 1 );
     lcd.print("Luftfeuchte");
     lcd.setCursor ( 0, 2 );
     lcd.print("Luftdruck");
     lcd.setCursor ( 0, 3 );
     lcd.print("Taupunkt");
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 18:00
Beitrag #10
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
(09.12.2018 17:47)magnum1795 schrieb:  Taupunkt werden nur ersten zwei Buchstaben richtig angezeigt, ab upunkt flackert die Anzeige extrem..
Weil gleich nach der Ausgabe von Taupunkt das lcd.clear() kommt.
Wirf das raus oder mache die [] zu ()
Code:
delay [10];
Dass es am UNO funktioniert, spricht für Pegelprobleme am ESP. Also dort einen Levelshifter in die I2C-Leitungen und dann das Display an 5V betreiben.

Du musst immer Deinen kompletten Ablauf im Auge haben. Wenn die Schaltung nichts anderes zu tun hat, dann kannst Du am Ende des Loop eine Wartezeit mit delay einfügen.
Wenn es irgendwann mehr werden soll, dann musst Du Dich mit BlinkWithoutDelay beschäftigen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 18:25
Beitrag #11
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
habe es jetzt mal so gemacht wie du geschrieben hattest. Sprich bei delay die [] rausgenommen und dafür (10) eingesetzt. lcd.clear habe ich drin gelassen. Ergebniss, flackert unterste Zeile. Also lcd.clear ganz raus und oben das delay mal auf 1000

Ergebniss ist, flackert nichts mehr aber Anzeige zeigt jetzt
1 Zeile > Temperaturtion V1.0
2 Zeile > Luftfeuchte.Luftd.
3 Zeile >Luftdruckunaraum
4 Zeile > Taupunktnsoren aus

also lauter Kauterweslch

Möchte ja das dann bei loop immer
Temeratur
Luftfeuchte
Luftdruck
Taupunkt mit eben den richtigen Daten angezeigt werden.

Ich habe das ganze noch nicht richtig kapiert. Na ja, aller Anfang ist schwer.

Wie muss denn dann unten bei loop der Eintrag richtig sein damit dies angezeigt wird?

Muss da eventuell ein else rein oder eine leere Schleife? Kapier es einfach noch nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 19:00
Beitrag #12
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
Probiere doch mal folgenden Aufbau im loop:
Code:
void loop()
{
     // hier kommt später die Messung hin
     lcd.clear();
     lcd.setCursor ( 0, 0 );
     lcd.print("Temperatur");
     lcd.setCursor ( 0, 1 );
     lcd.print("Luftfeuchte");
     lcd.setCursor ( 0, 2 );
     lcd.print("Luftdruck");
     lcd.setCursor ( 0, 3 );
     lcd.print("Taupunkt");
     delay(2000);
}

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 19:36 (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2018 19:43 von magnum1795.)
Beitrag #13
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
Hatte es zwischenzeitlich hinbekommen. delay habe ich aber "nur" 600 eingetragen und es funktionierte dann. Wollte jetzt mal den BME280 am Arduino testen, aber ich weiß nicht an welchen Pin SDA und SCL am Arduino kommen. A4 und A5 sind ja schon belegt. Hatte da versucht an die Digitalpins 1 und 2 anzuschließen, aber da kommt immer eine Fehlermeldung beim komplieren. Wire.begin(1,2); eingetragen, das scheint es aber nicht zu geben.

Alle Anleitungen die ich bisher finden konnte, wollen das der BME280 an A4 und A5 angeschlossen wird, welche jetzt aber schon durch das Display belegt sind. Stehe mächtig auf den Schlauch.

Hast du da noch einen Tipp an welche Pins ich den BME280 am Arduino stecken soll und was dann icm Code drin stehen muss damit dieser auch angesprochen wird?

Mir raucht heute schon der Kopf, ist eben alles ziemlich viel für einen Nobb wie mich.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 19:45
Beitrag #14
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
Das hängt davon ab, welchen Arduino Du nutzt. Beim UNO siehst Du es hier.

Du hast doch schon Dein Display an I2C. I2C ist ein Bus.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 20:47 (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2018 20:56 von magnum1795.)
Beitrag #15
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
so, kurze Rückmeldung. Ich verwende einen Arduino Uno.

Habe es hinbekommen. Die Werte werden nun angezeigt und auch aktualisiert.

Mann, mann , mann. Schwere Geburt. Aber jeder hat mal klein angefangen. Nun sollte es blos noch auf den ESP8266 laufen und die Daten auch noch an Thingspeak senden. Aber das dürfte nun nicht mehr so schwer sein, hoffe ich jedenfalls.

Danke dir noch mal für deine Geduld mit mir. Das ist der code für den Arduino Uno. Display ist an A4 und A5 sowie 5 Volt und GND angeschlossen. BME280 ist an 3 Volt, GND, und SDa und SCL an die entsprechenden Pins beim Uno (laut Zeichnung, auch hierfür vielen Dank, sind es die beiden Pins vorn links neben den USB Anschluss.

Funktioniert jetzt so wie ich es eigentlich schon von Anfang an haben wollte.

Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Wire.h>


//LiquidCrystal_I2C lcd(0x27);  // Set the LCD I2C address
LiquidCrystal_I2C lcd(0x27,20,4);
Adafruit_BME280 bme; // I2C

float h, t, p, pin, dp;
char temperatureFString[6];
char dpString[6];
char humidityString[6];
char pressureString[7];
char pressureInchString[6];



void setup()
{
     lcd.begin();
     lcd.setCursor(1,0);
     lcd.print("Wetterstation V1.0");
     lcd.setCursor(0,1);
     lcd.print("Temp. Luftf. Luftd.");
     lcd.setCursor(4,2);
     lcd.print("im Saunaraum");
     lcd.setCursor(1,3);
     lcd.print("Lese Sensoren aus");
    
     lcd.backlight();
     delay(5000);
    
     lcd.noBacklight();
     delay(1000);

     lcd.backlight();
     // finish with backlight on
/*
     lcd.setCursor(0, 0);                       // Anfang auf Stelle 0, Zeile 0 setzen
    lcd.print("Temp. :");                      // Temp. : auf LCD ausgeben
//    lcd.setCursor(12, 0);                      // Anfang auf Stelle 12, Zeile 0 setzen
//    lcd.print(t);                              // Wert aus "t" ausgeben (Temperatur)
    lcd.setCursor(17, 0);                      // Anfang auf Stelle 17, Zeile 0 setzen
    lcd.print("C");                            // C auf LCD ausgeben
    
    lcd.setCursor(0, 1);                       // Anfang auf Stelle 0, Zeile 1 setzen
    lcd.print("Luftf.:");                      // Luft.: auf LCD ausgeben
//    lcd.setCursor(12, 1);                      // Anfang auf Stelle 12, Zeile 1 setzen
//    lcd.print(h);                              // Wert aus "h" ausgeben (Luftfeuchtigkeit)
    lcd.setCursor(17, 1);                      // Anfang auf Stelle 17, Zeile 1 setzen
    lcd.print("%");                            // % auf LCD ausgeben

    lcd.setCursor(0, 2);                       // Anfang auf Stelle 0, Zeile 2 setzen
    lcd.print("Luftd.:");                      // Temp. : auf LCD ausgeben
//    lcd.setCursor(12, 2);                      // Anfang auf Stelle 12, Zeile 2 setzen
//    lcd.print(p);                              // Wert aus "p" ausgeben (Luftdruck)
    lcd.setCursor(17, 2);                      // Anfang auf Stelle 17, Zeile 2 setzen
    lcd.print("hPa");                          // hPa auf LCD ausgeben
    
    lcd.setCursor(0, 3);                       // Anfang auf Stelle 0, Zeile 3 setzen
    lcd.print("Taup. :");                      // Luft.: auf LCD ausgeben
//    lcd.setCursor(12, 3);                      // Anfang auf Stelle 12, Zeile 3 setzen
//    lcd.print(dp);                             // Wert aus "dp" ausgeben (Taupunkt)
    lcd.setCursor(17, 3);                      // Anfang auf Stelle 17, Zeile 3 setzen
    lcd.print("C");                            // C auf LCD ausgeben
*/
     Serial.begin(115200);
     delay [10];
//    Wire.begin(1,2);
    
    Serial.println(F("BME280 test"));
    delay(1000);
    
    if (!bme.begin()) {
    Serial.println("Es konnte kein gültiger BME280-Sensor gefunden werden, Verdrahtung prüfen!");
    while (1);
  }
}

void loop()
{

    h = bme.readHumidity();
    t = bme.readTemperature();
   // t = t*1.8+32.0;
    dp = t-19,4*(100,0-h);
    p = bme.readPressure()/100.0F;
    pin = 0.225*p;
//    dtostrf(temp, 4, 1, prevTemp = 0);   //handled in sendTemp()
    dtostrf(t, 5, 1, temperatureFString);
    dtostrf(h, 5, 1, humidityString);
    dtostrf(p, 6, 1, pressureString);
    dtostrf(pin, 5, 2, pressureInchString);
    dtostrf(dp, 5, 1, dpString);
    delay(10);


    Serial.print("Temperatur       =   ");
    Serial.print(temperatureFString);
    Serial.println ("  °C");
    Serial.print("Luftfeuchtigkeit =   ");
    Serial.print(humidityString);
    Serial.println ("   %");
    Serial.print("Luftdruck        =   ");
    Serial.print(p);
    Serial.println (" hPA");
    Serial.print("Höhe             =   ");
    Serial.print(pressureInchString);
    Serial.println ("  m");
    Serial.print("Taupunkt         =   ");
    Serial.print(dpString);
    Serial.println ("  °C");
    
    lcd.setCursor(0, 0);                       // Anfang auf Stelle 0, Zeile 0 setzen
    lcd.print("Temperatur");                      // Temp. : auf LCD ausgeben
    lcd.setCursor(10, 0);                      // Anfang auf Stelle 12, Zeile 0 setzen
    lcd.print(temperatureFString);                              // Wert aus "t" ausgeben (Temperatur)
    lcd.setCursor(18, 0);                      // Anfang auf Stelle 17, Zeile 0 setzen
    lcd.print("C");                            // C auf LCD ausgeben
    
    lcd.setCursor(0, 1);                       // Anfang auf Stelle 0, Zeile 1 setzen
    lcd.print("Luftfeuchte");                      // Luft.: auf LCD ausgeben
    lcd.setCursor(10, 1);                      // Anfang auf Stelle 12, Zeile 1 setzen
    lcd.print(humidityString);                              // Wert aus "h" ausgeben (Luftfeuchtigkeit)
    lcd.setCursor(18, 1);                      // Anfang auf Stelle 17, Zeile 1 setzen
    lcd.print("%");                            // % auf LCD ausgeben

    lcd.setCursor(0, 2);                       // Anfang auf Stelle 0, Zeile 2 setzen
    lcd.print("Luftdruck");                      // Temp. : auf LCD ausgeben
    lcd.setCursor(10, 2);                      // Anfang auf Stelle 12, Zeile 2 setzen
    lcd.print(p);                              // Wert aus "p" ausgeben (Luftdruck)
    lcd.setCursor(17, 2);                      // Anfang auf Stelle 17, Zeile 2 setzen
    lcd.print("hPa");                          // hPa auf LCD ausgeben
    
    lcd.setCursor(0, 3);                       // Anfang auf Stelle 0, Zeile 3 setzen
    lcd.print("Taupunkt");                      // Luft.: auf LCD ausgeben
    lcd.setCursor(10, 3);                      // Anfang auf Stelle 12, Zeile 3 setzen
    lcd.print(dpString);                             // Wert aus "dp" ausgeben (Taupunkt)
    lcd.setCursor(18, 3);                      // Anfang auf Stelle 17, Zeile 3 setzen
    lcd.print("C");                            // C auf LCD ausgeben
    delay(500);
    lcd.clear();
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.12.2018, 20:55 (Dieser Beitrag wurde zuletzt bearbeitet: 09.12.2018 21:04 von Tommy56.)
Beitrag #16
RE: Problem mit Displayanzeige LCD2004 bzw. nicht Richtig
Denke beim ESP8266 an den Levelshifter, z.B. den hier. (die beiden äußeren Linien benutzen)

SDA/SCL sind mit A4/A5 direkt auf der Platine des UNO verbunden.

Gruß Tommy

Edit: Welche I2C-Display-Lib benutzt Du auf dem ESP8266 (Link bitte)

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Reaktionsspiel funktioniert nicht, wie es sollte... Stagneth.Alexander 27 498 21.07.2019 07:57
Letzter Beitrag: Stagneth.Alexander
Wink Solar Roboter- Servo dreht nach Stopp nicht weiter Stagneth.Alexander 28 682 15.07.2019 19:26
Letzter Beitrag: hotsystems
Question Programm läuft nicht richtig CMeeep 22 969 04.07.2019 21:58
Letzter Beitrag: Franz54
  PZS Problem mit Ausgang schalten Flötzinger 0 361 28.06.2019 15:53
Letzter Beitrag: Flötzinger
  2 Sketche zusammenführen - korrelieren nicht Nicolai 11 914 24.05.2019 11:04
Letzter Beitrag: Nicolai
  Unterroutinenaufruf- wie gehts richtig? Telefonmann 12 850 04.05.2019 13:51
Letzter Beitrag: MicroBahner
  [includes]Wie gebe ich den Pfad der .h-Datei richtig an ManniP 6 430 28.04.2019 09:29
Letzter Beitrag: Fips
  Bedingung wird nicht wiederholt ausgeführt Lite 16 1.091 29.03.2019 05:11
Letzter Beitrag: Lite
  HttpBasicAuth richtig einbinden Matroks12 2 427 18.03.2019 11:01
Letzter Beitrag: Bitklopfer
  Gelöst ==> Arduino Nano, Kommunikation mit PC bringt nicht korrekten ASCII moehrle 4 595 02.03.2019 22:04
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste