Lokale Variablen der Loop ausgeben

Hallo allerseits,

ich bin derzeit am herumprobieren, um das Programmieren der Arduinos zu lernen. Ich habe ein kleines Programm geschrieben, wenn dieses zu Ende ist, soll der Arduino ziemlich viele der Daten ausgeben, damit ich diese überprüfen kann. Das Programm läuft quasi die ganze Zeit aber sollte es einmal unplanmäßig beendet sein (z.B. ein Sensor löst aus), sollen alle relevanten Variablen ausgegeben werden. Ich möchte hier nicht das gesamte Programm posten, habe deshalb mal ein kleines Minibeispiel fertig gemacht. Ich habe Variablen der Typen int und double. Diese sollen nun aus der loop-Funktion heraus in die Funktion "ausgabefunktion" übergeben werden, klar hier könnte ich diese einfach einfügen im Sinne: ausgabefunktion(a, b, c, d....); allerdings ist dies sicher nicht die sauberste Lösung, da sehr viele Variablen überreicht werden müssten... Ich dachte mir evtl die Daten in einem Array unterzubringen mit Referenz auf die einzelnen Variablen, um Ressourcenschohnend zu arbeiten?!

Evtl. habt ihr ja eine Lösung für mir parat, vielen Dank im Voraus.

Hier der Code:

void ausgabefunktion()
{
  //Hier wird nun der Printbefehl eingeführt
  //um alle Daten auszugeben
}


void setup() {

}

void loop() {

static bool programmende = false;

int a = random(0,100);
int b = random(0,100);
int c = random(0,100);
int d = random(0,100);
double e = random(0,100);
int f = random(0,100);
double g = random(0,100);
int h = random(0,100);

  
if(programmende = true)
{
  ausgabefunktion();
}


}

Mirko

Entweder übergibst Du alle Werte der Funktion (Übergabewerte in Klammern)
oder benutzt globale Variablen die Außerhalb jeder Funktion deklariert werden müssen.

Grüße UWe

Mirko79:
... Evtl. habt ihr ja eine Lösung für mir parat, vielen Dank im Voraus. ...

Deklariere die Variablen außerhalb aller Funktionen. Dann sind sie global und Du musst überhaupt nichts übergeben.

Gruß

Gregor

Danke für die schnellen Antworten, ich versuche eigentlich keine globalen Variablen zu verwenden, die scheinen ja recht verpönt zu sein... Ggf. noch eine alternative Lösung?

Mirko

Mirko79:
Danke für die schnellen Antworten, ich versuche eigentlich keine globalen Variablen zu verwenden, die scheinen ja recht verpönt zu sein... Ggf. noch eine alternative Lösung?

In diesem Fall wären globale Variablen die einfachste Lösung. Ich wüsste auch nicht, wieso globale Variablen im Zusammenhang mit Arduino verpönt sein sollten. Das Blöde an lokalen Variablen ist, dass sie jedesmal angelegt und zum Ende der Funktion loop() wieder vernichtet werden. Mit globalen Variablen sparst Du Prozessorzeit, wobei es hier vermutlich nur um Nanosekunden geht.

Gruß

Gregor

Du könntest natürlich auch ein struct definieren, davon eine lokale Variable anlegen und einen Zeiger darauf an die Funktion übergeben.
Es gibt viele Möglichkeiten.

Gruß Tommy

Danke, dass mit dem Struct probiere ich mal aus, sieht gut aus!

Mirko