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
  Anet A8 Problem bei Firmware aufspielen evomanne 18 323 01.06.2020 15:49
Letzter Beitrag: Bitklopfer
  Problem mit #include GuaAck 11 491 03.05.2020 09:04
Letzter Beitrag: amithlon
  strcmp funktioniert nicht richtig Cano 7 393 25.04.2020 10:47
Letzter Beitrag: Cano
  SoftwareSerial.h und SD.h vertragen sich nicht sowerum 25 1.159 25.04.2020 10:46
Letzter Beitrag: hotsystems
  Problem mit Nokia 5110 Display MKnet83 17 819 12.04.2020 13:31
Letzter Beitrag: Tommy56
  case Problem? Harry 10 625 09.04.2020 10:55
Letzter Beitrag: Harry
  Sketch für WS2812 klappt nicht ThorstenP 9 555 02.04.2020 14:50
Letzter Beitrag: ThorstenP
  Nano Every upload geht nicht Jeanlion1 6 420 01.04.2020 17:45
Letzter Beitrag: Tommy56
  Menu funktioniert ohne Serial.println nicht GSA1150 7 413 30.03.2020 18:26
Letzter Beitrag: Tommy56
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 787 20.03.2020 10:04
Letzter Beitrag: hotsystems

Gehe zu:


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