'MYCLASS' does not name a type

Moin,

versuche gerade mein Code etwas übersichtlicher zu gestallten, daher habe ich angefangen Code auszulagern.

Habe für meine Class “Weather” eine neue Weather.ino Datei erstellt (rechts über neue Tab).

Alles was die Klasse benötigt, habe ich darein gepackt.

// DHT library
#include <DHT.h>
#include <SPI.h>

#define DHTTYPE DHT22                         // DHT11 or DHT21 or DHT22
#define DHTPIN 2                              // DataPin for the DHT Module
DHT dht(DHTPIN, DHTTYPE);                     // Create instance DHT

class Weather
{
  // Class Member variables
  // These are initialized at startup
    long OnTime;                                // milliseconds of on-time
    long OffTime;                               // milliseconds of off-time
    volatile unsigned long previousMillis;      // will store last time LEDs was updatted
    float temperature;                          // lokal variable to store the temperature from DHT
    float humility;                             // lokal variable to store the humility from DHT
    

// Constructor - creates a weather instance
// and initiliazes the member varialbles and state
  public:
    Weather(long _on, long _off)
    {
      OnTime = _on;
      OffTime = _off;
      previousMillis = 0;
      dht.begin();
    }

    float readDHT_temperature(unsigned long currentMillis)
      // read the temperature from the DHT Module
    {
      if ( currentMillis - previousMillis >= OnTime)
      {
        float temperature = dht.readTemperature();          // read temperature
        if ( isnan(temperature) )                           // check
        {
          Serial.println("Error - Can't read temperature from DHT!");
          return -1000;
        }
        else 
        {
          Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" °C");
          return temperature;
        }
      }
    }

    float readDHT_humility(unsigned long currentMillis)
      // read the humility from the DHT Module
    {
      if ( currentMillis - previousMillis >= OnTime)
      {
        float humility = dht.readTemperature();               // read temperature
        if ( isnan(humility) )                                // check
        {
          Serial.println("Error - Can't read humility from DHT!");
          return -1000;
        }
        else 
        {
          Serial.print("Humility: "); Serial.print(humility); Serial.println(" %");
          return humility;
        }
      }
    }
};

Erste Kompilierung war erfolgreich, ohne erstmal die Klasse Weather zu initialisiern.

Wenn ich jetzt versuche die Klasse im Hauptprogramm zu initialisieren

Weather myWaether(0,300000)

Weather myWaether(0,300000)


void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

bekomme ich folgenden Fehler vom Compiler:

error: ‘Weather’ does not name a type
Weather myWaether(0,300000)
^
exit status 1
‘Weather’ does not name a type

Wenn ich das Konzept von TABs in der Arduino IDE richtig verstanden habe, dann geht doch die IDE hin, und bastelt aus allen Dateien eine und übergibt diese an den Compiler?

Oder habe ich hier irgendwas übersehen?

Gruß ZHermann

Habe für meine Class "Weather" eine neue Weather.ino Datei erstellt (rechts über neue Tab).

Kannst du tun, aber ich würde die Klasse in eine *.h Datei stopfen.
Und dann per #include in die *.ino laden.
Dann hast du den Vorgang unter Kontrolle, und kannst die *.h als Lib nutzen.

Weather myWaether(0,300000)
Weather myWaether(0,300000); // Semikolon vergessen.

In den Einstellungen, alle Meldungen aktiviert?