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??
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
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
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
Post a Comment