Hallo zusammen,
ich möchte mir den folgenden Code ein wenig anpassen und mein Anemometer einfügen. Ich erhalte den Fehler :
...\sketch_may19b.ino: In function 'void loop()':
...\sketch_may19b\sketch_may19b.ino:197:38: error: invalid operands of types 'float' and 'const char [19]' to binary 'operator+'
client.println(windSpeed + " km/h</blockquote>");
~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
exit status 1
Compilation error: invalid operands of types 'float' and 'const char [19]' to binary 'operator+'
Kann mir jemand bei meinem Denkfehler helfen??
#include "DHT.h"
#include "WiFi.h"
#include "NTP.h"
char Router[] = "xxx";
char Passwort[] = "xxx";
#define DHTTYPE DHT11
#define DHTPIN 33
const int fan1 = 13;
const int fan2 = 5;
DHT dht(DHTPIN, DHTTYPE);
WiFiServer WiFiServer(80);
WiFiClient client = WiFiServer.available();
byte Zaehler = 0;
const byte AnzahlDaten = 11;
String gespeicherteTemperatur[AnzahlDaten];
String gespeichertesDatum[AnzahlDaten];
String gespeicherteLuftfeuchtigkeit[AnzahlDaten];
WiFiUDP wifiUdp;
NTP ntp(wifiUdp);
// Windsensor
const int sensorPin = 2;
int sensorValue = 0;
float sensorVoltage = 0;
float windSpeed = 0;
void setup() {
dht.begin();
Serial.begin(9600);
while (!Serial);
delay(1000);
Serial.print("Verbindung aufbauen mit ");
Serial.println(WiFi.SSID());
WiFi.begin(Router, Passwort);
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
WiFiServer.begin();
Serial.print("Router: ");
Serial.println(WiFi.SSID());
Serial.print("IP Adresse Arduino: ");
Serial.println(WiFi.localIP());
ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120);
ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60);
ntp.begin();
ntp.update();
switch (ntp.weekDay())
{
case 0:
Serial.print("Sonntag");
break;
case 1:
Serial.print("Montag");
break;
case 2:
Serial.print("Dienstag");
break;
case 3:
Serial.print("Mittwoch");
break;
case 4:
Serial.print("Donnerstag");
break;
case 5:
Serial.print("Freitag");
break;
case 6:
Serial.print("Samstag");
break;
}
Serial.print(", ");
Serial.println(ntp.formattedTime("%d. %B %Y %T Uhr"));
}
void loop() {
float Temperatur;
float Luftfeuchtigkeit;
String Nummer;
String AnzeigeTemperatur;
String AnzeigeLuftfeuchtigkeit;
String aktuelleZeit = "";
client = WiFiServer.available();
if (client)
{
String SchaltungLesen = "";
while (client.connected())
{
if (client.available())
{
char Zeichen = client.read();
if (Zeichen == '\n')
{
if (SchaltungLesen.length() == 0)
{
// HTTP-Anforderung senden
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<!doctype html>");
client.println("<html>");
client.println("<body>");
client.println("<meta http-equiv=\"refresh\" content=\"60\">");
client.println("<h1> Temperatur und Luftfeuchtigkeit messen</h1>");
client.println("<hr />");
client.print("<h2>Letzte Messung: ");
ntp.update();
switch (ntp.weekDay())
{
case 0:
aktuelleZeit += "Sonntag";
break;
case 1:
aktuelleZeit += "Montag";
break;
case 2:
aktuelleZeit += "Dienstag";
break;
case 3:
aktuelleZeit += "Mittwoch";
break;
case 4:
aktuelleZeit += "Donnerstag";
break;
case 5:
aktuelleZeit += "Freitag";
break;
case 6:
aktuelleZeit += "Samstag";
break;
}
aktuelleZeit += ", ";
aktuelleZeit += ntp.formattedTime("%d. %B %Y %T Uhr");
client.println(aktuelleZeit);
client.println("</h2>");
client.println("<hr />");
AnzeigeTemperatur = String(dht.readTemperature());
AnzeigeTemperatur.replace(".", ",");
AnzeigeLuftfeuchtigkeit = String(dht.readHumidity());
AnzeigeLuftfeuchtigkeit.replace(".", ",");
client.print("<b>Temperatur:</b><blockquote>");
client.println(AnzeigeTemperatur + " °C</blockquote>");
client.println("<br>");
windmessung();
client.print("<b>Windgeschwindigkeit:</b><blockquote>");
client.println(windSpeed + " km/h</blockquote>");
client.println("<br>");
client.print("<b>Luftfeuchtigkeit:</b><blockquote>");
client.println(AnzeigeLuftfeuchtigkeit + " %</blockquote><hr>");
client.println("<form>");
gespeichertesDatum[Zaehler] = aktuelleZeit;
gespeicherteTemperatur[Zaehler] = AnzeigeTemperatur;
gespeicherteLuftfeuchtigkeit[Zaehler] = AnzeigeLuftfeuchtigkeit;
client.println("<b>Gespeicherte Werte:<br></b>");
for (int i = 0; i <= Zaehler; i++)
{
client.println(String(i + 1) + ": ");
client.println(gespeichertesDatum[i]);
client.print(" | Temperatur: → ");
client.println(gespeicherteTemperatur[i]);
client.print(" °C");
client.print(" | Luftfeuchtigkeit: → ");
client.println(gespeicherteLuftfeuchtigkeit[Zaehler]);
client.println("%");
client.println("<br>");
}
client.println("<hr />");
client.print("<input style=\"font-size:16pt; font-weight:bold;");
client.print("background-color:#55A96B;");
client.print("display:block; cursor:pointer;\"type=\"button\"");
client.println(" onClick=\"location.href='WiFi.localIP()'\" value=\"aktualisieren\">");
client.println("</form>");
client.println("<hr />");
client.print("<b>Eigene IP: ");
client.print(client.remoteIP());
client.print("</b>");
client.print("<br><b>IP Arduino: ");
client.print(WiFi.localIP());
client.print("</b>");
client.println("</b>");
client.println("</body>");
client.print("</html>");
client.println();
break;
}
else
{
SchaltungLesen = "";
}
}
else if (Zeichen != '\r')
{
SchaltungLesen += Zeichen;
}
}
}
client.stop();
if (Zaehler < AnzahlDaten) Zaehler++;
if (Zaehler >= AnzahlDaten) Zaehler = 0;
}
}
void windmessung() {
float voltageConversionConstant = .004882814;
int sensorDelay = 1000;
float voltageMin = .4;
float windSpeedMin = 0;
float voltageMax = 2.0;
float windSpeedMax = 32;
sensorValue = analogRead(sensorPin);
sensorVoltage = sensorValue * voltageConversionConstant;
if (sensorVoltage < voltageMin){
windSpeed = 0; //Check if voltage is below minimum value. If so, set wind speed to zero.
}else {
windSpeed = (sensorVoltage - voltageMin)*windSpeedMax/(voltageMax - voltageMin); //For voltages above minimum value, use the linear relationship to calculate wind speed.
}
delay(sensorDelay);
}