Mehere Instanzen ähnlich wie Array mit [index] ansprechen??

Hallo,

ich habe mehrere Instanzen und mehrere DHT22 Sensoren.
Kann ich diese Instanzen in einer Schleife auch ähnlich eines Arrays ansprechen mit [ i ] und so viel Code sparen?

Die Instanzen:

DHT dht_0 (DHT_PIN_0, DHT_TYPE_A);
DHT dht_1 (DHT_PIN_1, DHT_TYPE_A);
DHT dht_2 (DHT_PIN_2, DHT_TYPE_A);
...

Ähnlich eines Arrays erzeugen: DHT dht[Anzahl] = {{ DHT_PIN_0, DHT_TYPE_A},{DHT_PIN_1, DHT_TYPE_A}, ...} ...geht das so?? :confused:

In main Loop dann viel Code, für jede Insatnz das gleiche:

dht_nr      = 0;            // Sensor Nr.
    retry       = DHT_RETRY;    // Retry to get valid Data
    hum_rel_tmp = 0.0;          // Humidity temporery
    tem_tmp     = 0.0;          // Humidity temporery
    do{ 
        hum_rel_tmp = dht_0.readHumidity();
        tem_tmp    = dht_0.readTemperature();
        if(retry != DHT_RETRY) { delay(DHT_PAUSE); }
        retry--;
    } while( ((isnan(tem_tmp))||(isnan(hum_rel_tmp))) && (retry > 0) );
    if(retry > 0){
      hum_rel[dht_nr] = hum_rel_tmp;
      temp[dht_nr]    = tem_tmp;
    }


    dht_nr      = 1;            // Sensor Nr.
    retry       = DHT_RETRY;    // Retry to get valid Data
    hum_rel_tmp = 0.0;          // Humidity temporery
    tem_tmp     = 0.0;          // Humidity temporery
    do{ 
        hum_rel_tmp = dht_1.readHumidity();
        tem_tmp    = dht_1.readTemperature();
        if(retry != DHT_RETRY) { delay(DHT_PAUSE); }
        retry--;
    } while( ((isnan(tem_tmp))||(isnan(hum_rel_tmp))) && (retry > 0) );
    if(retry > 0){
      hum_rel[dht_nr] = hum_rel_tmp;
      temp[dht_nr]    = tem_tmp;
    }

usw. ...

Also Anstatt z.B. "hum_rel_tmp = dht_0.readHumidity();" so ähnlich etwa "hum_rel[0] = dht[0].readHumidity();" ??

Vielen Dank! :slight_smile:

Natürlich geht das.

In klassischem C++ muss man aber den Konstruktor der Klasse explizit aufrufen

DHT dht[] = { DHT(DHT_PIN_0, DHT_TYPE_A), DHT(DHT_PIN_1, DHT_TYPE_A), ...}

In C++11 (d.h. in neueren Arduino Versionen) geht auch deine Version, dank "uniform initialization":

Da wurden die verschiedenen Initialisierungsvarianten vereinheitlicht