Zähler in Variablen-Name mit for-Schleife füllen

Hallo Leute,

ich habe folgenden Code:

void Temperaturmessung() {

	double t1_bmp;
	double t2_bmp;
	double t3_bmp;
	double t4_bmp;
	double t5_bmp;

	double t1_dht;
	double t2_dht;
	double t3_dht;
	double t4_dht;
	double t5_dht;

	int numberOfValues = 10;
	double t_sum = 0;

	int i;

	state = bmp.startTemperature();

	if (state != 0) {

		for (i = 1; i < 6; i++) {


			switch (i)
			{
			case 1:
				t1_dht = dht.readTemperature();
				bmp.getTemperature(t1_bmp);
				delay(500);
				break;

			case 2:
				t2_dht = dht.readTemperature();
				bmp.getTemperature(t2_bmp);
				delay(500);
				break;

			case 3:
				t3_dht = dht.readTemperature();
				bmp.getTemperature(t3_bmp);
				delay(500);
				break;

			case 4:
				t4_dht = dht.readTemperature();
				bmp.getTemperature(t4_bmp);
				delay(500);
				break;

			case 5:
				t5_dht = dht.readTemperature();
				bmp.getTemperature(t5_bmp);
				delay(500);
				break;
			}
			
		}

wie man sieht, habe ich 10 verschiedene Variablen angelegt, um 10 Werte in einer switch-case Operation zu befüllen.

Punkt 1:
Ist es möglich, statt “Case 1…” “Case i” zu schreiben und somit 4 Cases wegfallen zu lassen?

Punkt 2:
Ist es möglich die Nummerierung in den Variablen “t1_dht…” auch über die for-Schleife zu steuern?

LG

PS: der Code macht sauber was er soll, ich möchte nur ein wenig “aufräumen” :slight_smile:

Hi

Verwende ein Array.

const byte anzahl=5;
...
double dht[anzahl],bmp[anzahl];
...
for (byte i=0;i<(sizeof(dht)/sizeof(dht[0]);i++){  //i<anzahl ginge hier natürlich auch)
  dht[i]=...;
   bmp[i]=...;
}

Bevor Du Dir Deinen jetzigen Sketch zerlegst, sichere Diesen (geht z.B. via ‘Archivieren’, erstellt dann aus dem Projekt-Ordner eine ZIP mit Datum/Uhrzeit).

MfG

Im Moment ist es möglich for und switch einfach zu entfernen, ohne Funktionialität zu verlieren.
(Alle cases hintereinander ergeben den Ablauf).

Warum willst du vier Kopien der dht Werte rumschleppen?

Die Werte sollten in Arrays oder einem Array von Strukturen liegen,
dann kannst du sie auch indizieren.

Hallo,
schreibe die Werte Deiner Variablen doch in ein Array. Dann haben sie immer den richtigen Platz und lassen sich einfach
mit- und ohne Schleife auswerten.
Warum fragst Du ob etwas möglich ist?
Probiere es doch einfach.
Gruß und Spaß
Andreas

P.S. ach! zu langsam

SkobyMobil:
Warum fragst Du ob etwas möglich ist?

Na ja, er fragt ob etwas möglich ist, das eben nicht möglich ist, jedenfalls nicht so wie er sich das vorstellt.

maker_berni:
Ist es möglich, statt "Case 1..." "Case i" zu schreiben und somit 4 Cases wegfallen zu lassen?

Ist es möglich die Nummerierung in den Variablen "t1_dht..." auch über die for-Schleife zu steuern?

Danke Leute für die Antworten! Das mit dem array leuchtet ein, werde ich dann auch gleich probieren :slight_smile:

LG

maker_berni:
... ich möchte nur ein wenig "aufräumen" :slight_smile:

Dann lösche vor allem überflüssige Leerzeilen.

Gruß

Gregor