Hallo Gemeinde,
ein noch grüner hinter den Ohren User des Arduino hat ein Problem, bei dem er trotz einige Tage googlen und Forum lesen bzw vergleichen ncht mehr weiter kommt.
Mein Sketch bringt folgenden Fehler, bei dem ich nicht wiess, wie er zu beseitigen ist. Das ganze ist zur Überprung da, ob das LCD Shield mit dem ESP01 Modul zusammen läuft. Ziel ist es, das der Arduino Thermometer anzeigt, die Daten an einen Raspi schickt und diese dir visull sichtbar gemacht werden (InfluxDB und Grafana).
Vielen dank für eure Unterstützung.
LED Blitzer
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <DHT.h>
//#include <DHT_U.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD Shield
#define DHTPIN A5 // PIN für DHT22
#define DHTTYPE DHT22 // DHT 22
DHT dht(DHTPIN, DHTTYPE);
//----------------------------------------------------------------
// Konfiguration ESP8266WiFi
//----------------------------------------------------------------
#include "WiFiEsp.h"
#ifndef HAVE_HWSERIAL1
SoftwareSerial Serial1(13, 12); // RX, TX
#endif
char ssid[] = "XXX12345"; // your network SSID //// ZUHAUSE
char pass[] = "XXX09876"; // your network password//// ZUHAUSE
int status = WL_IDLE_STATUS; // the Wifi radio's status
// Initialize the Ethernet client object
WiFiEspClient client;
//--------------------------------------------------------------------------------
void setup() {
// wifi init
Serial.println("Starting WiFi");
WiFi.begin(ssid, pass);
//-------------------------------------------------------------------------------
if (WiFi.status()==WL_CONNECTED) { //Wenn Wlan verbunden
Serial.print("Connected"); //Sagt "Connected"
}
else { //Wenn nicht
loop();
Serial.print("."); //Dann Sagt alle halbe sec ein Punkt
delay(500);
lcd.begin(16, 2);
lcd.print("starting");
lcd.clear();
dht.begin();
Serial.begin(9600);
Serial.print("Connection WIFI da");
}
//----------------------------------------------------------------
void loop()
{ <-------------------- genau hier tritt der Fehler auf; warum? Lösung?
float h = dht.readHumidity();
float t = dht.readTemperature();
if(isnan(h) || isnan(t) ||){ // check if returns are valid, if they are NaN (not a number) then something went wrong!
lcd.setCursor(0,0);
lcd.println("DHT22 nicht gefunden");
return;
}
else {
lcd.setCursor(0,0);
lcd.print(" Temp: ");
lcd.print(t);
lcd.print(" \337C");
lcd.setCursor(0,1);
lcd.print("Luftf: ");
lcd.print(h);
lcd.print(" % ");
}
delay(1000); // DHT22 can't poll faster than 1x a second
}
Serial.print(" Temp: ");
Serial.print(t);
Serial.print("C");
Serial.print("\t");
Serial.print("Luftf: ");
Serial.print(h);
Serial.print("%");
Serial.print("\t");
delay(2000); // lese alle 2 Sekunden ein
}
Hi Franz,
Danke für die Antwort. Habe ich gemacht, jedoch ohne Erfolg, gleiches Fehlerbild.
lcd_Temp_Funk_V01:80: error: a function-definition is not allowed here before '{' token
{
^
lcd_Temp_Funk_V01:113: error: expected '}' at end of input
}
^
Mehrere Bibliotheken wurden für "Adafruit_Sensor.h" gefunden
Benutzt: C:\Users\XXXX\Documents\Arduino\libraries\Adafruit_Sensor
Nicht benutzt: C:\Users\aehrle\Documents\Arduino\libraries\Adafruit_Unified_Sensor
exit status 1
a function-definition is not allowed here before '{' token
else { //Wenn nicht
loop();
Serial.print("."); //Dann Sagt alle halbe sec ein Punkt
delay(500);
lcd.begin(16, 2);
...
...ist irgendwie vermurkst (in der Version "12:10:41 by LED_Blitzer".
Formal fehlt die schliessende Klammer von setup() vor der Definition von
void loop () {...
, wenn ich das richtig sehe.
Dass man loop() einmal innerhalb von setup aufruft, ist ungewöhnlich.
Der Kommentar danach ".. alle halbe sec ... " deutet an, dass das ganz anders gedacht ist.
Hi Michael,
der Aufruf mit aller halben Secunde sollte mir eigentlich auf dem seriellen Interface zeigen, ob das WLAN verbunden ist, oder eben nicht - in dem Fall, alle halbe Secunde einen Punkt schreiben. Gibt es dafür eine elegantere Lösung?
Elegantere Lösung gibt es, aber der Aufruf loop();
innterhalb von setup() war vermutlich ein Irrtum. ( Das baut die Arduino-IDE für dich aussen rum )
Mal nur ein bisschen umgestellt:
...
void setup() {
Serial.begin(9600);
// wifi init
Serial.println("Starting WiFi");
WiFi.begin(ssid, pass);
while (WiFi.status()!=WL_CONNECTED) {
//Solange nicht verbunden
Serial.print("."); //Dann Sagt alle halbe sec ein Punkt
delay(500);
}
//Wenn Wlan verbunden
Serial.print("Connected"); //Sagt "Connected"
lcd.begin(16, 2);
lcd.print("starting");
lcd.clear(); // Damit man das "starting" nicht sehen kann ;)
dht.begin();
Serial.print("Connection WIFI da");
} // Ende von setup
void loop () {
...
}
Die geschwungene Klammer die setup() schließen sollte ist in die loop() gerutscht.
Welche geschwungene schließende Klammer versetzt werden muß, mußt Du entscheiden.
Danke schön. Ohne Fehler ist der Sketch jetzt kompiliert.
Doch oh graus!!!
Keinerlei Anzeigen in der seriellen Konsole, noch am LCD.
Ich glaube ich habe hier noch einen größeren Hund eingebaut.
LED_Blitzer:
Danke schön. Ohne Fehler ist der Sketch jetzt kompiliert.
Doch oh graus!!!
Keinerlei Anzeigen in der seriellen Konsole, noch am LCD.
Ich glaube ich habe hier noch einen größeren Hund eingebaut.
Doch o Graus!
Keinerlei Anzeigen in der seriellen Konsole, noch am LCD.
Ich glaube ich habe hier noch einen größeren Hund eingebaut.
Nein, mindestens sind es zwei Hunde, aber vermutlich kleinere
Dass die Leute auch mit irgendeinem gefundenen Mist, und gleich einem großen Sketch anfangen wollen...
"Keinerlei Anzeige in der Seriellen Konsole" sollte mit
void setup() {
Serial.begin(9600); // muss natürlich vor einem print kommen
// wifi init
Serial.println("Starting WiFi");
}
void loop() {}
6 Zeilen sind schon reichlich
... in den Griff zu kriegen sein. Wenn das tut, kannst du dich um dein LCD-Display kümmern.
( Da hast du ein .clear(), was die Ausgabe von vorher natürlich unsichtbar macht )
Dann hast du eine TestUmgebung, mit der du dein WiFi connect testen kannst.