Anemometer - invalid operands of types 'float' and 'const char [19]' to binary 'operator+'

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 + " &deg;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: &rarr; ");
              client.println(gespeicherteTemperatur[i]);
              client.print(" &deg;C");
              client.print(" | Luftfeuchtigkeit: &rarr; ");
              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);
}

Die Meldung ist klar!
Es gibt bei dir (noch) keinen Operator, welcher Zeichenketten mit float verknüpft!

Alternativen:

  1. Nacheinander ausgeben.
  2. Einen Operator erfinden
  3. String verwenden.

etwas besser:

            client.println(AnzeigeTemperatur);
            client.println(" &deg;C</blockquote>");

aber da ist vieles eigenartig in deinem Code.
Auf welchem Controller soll das laufen?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.