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 [ ] und viel code sparen?

die instanzen:
code: [select]
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?? :smiley-confuse:

in main loop dann viel code, für jede insatnz das gleiche:
code: [select]
dht_nr      = 0;            // sensor nr.
    retry       = dht_retry;    // retry 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 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();" ähnlich etwa "hum_rel[0] = dht[0].readhumidity();" ??

vielen dank!  :)

natürlich geht das.

in klassischem c++ muss man aber den konstruktor der klasse explizit aufrufen
code: [select]

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":
https://mbevin.wordpress.com/2012/11/16/uniform-initialization/
https://msdn.microsoft.com/de-de/library/dn387583.aspx
da wurden die verschiedenen initialisierungsvarianten vereinheitlicht


Arduino Forum > International > Deutsch (Moderator: uwefed) > Mehere Instanzen ähnlich wie Array mit [index] ansprechen??


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'