Forum: Mikrocontroller und Digitale Elektronik Arbeiten mit Variablen


von Wayne I. (mustang)


Lesenswert?

Ein gutes neues Jahr wünsche ich allen Forenmitgliedern

Aber auch im neuen Jahr gibt es kleine Probleme mit denen ich mich 
vertrauensvoll an euch wende.

Es geht um folgendes:
Ich habe eine Funktion in C geschrieben die mir den Ladevorgang eines 
Akkus überwacht und verschiedene Aktionen ausführt.
Für diese Verschiedenen Aktionen sind mehrere Globale Variablen 
deklariert worden. An die Funktion übergebe ich den aktuell zu ladenden 
Akku (1-4). Innerhalb der Funktion soll nun für den jeweiligen Akku 
bestimmte Prüfungen durchgeführt werden und in die globalen Variablen 
geschrieben werden (Ladestrom, Ladezustand, schreiben in EEPROM, etc.)
Jetzt ist die Frage, ob es irgendwie die Möglichkeit gibt anhand des 
übermittelten Akkus zu der Funktion, in die zum jeweiligen Akku 
zugehörige Globale Variable zu schreiben?

Ich habe mir das ganze so vorgestellt:
1
//************** Globale Variable *******************
2
unsigned int StromAkku1
3
unsigned int StromAkku2
4
...
5
6
//******* Funktion Laden ****************************
7
// Übergabe: Zu ladender Akku    Rückgabe: 0 = akku Voll / 1= Akku Laden
8
9
bool laden (unsigned char AkkuNr)
10
{
11
  StromAkku(hier die AkkuNr anhängen) = Ladestrom (....);
12
  ....
13
  ....
14
}

Kann man sowas irgendwie lösen? Weil ich habe keinen Ansatz wie, 
geschweige denn eine Ahnung mit welchen Begriffen ich den Google füttern 
soll.
Danke mal für euere Hilfe

Gruß

von Klaus W. (mfgkw)


Lesenswert?

so direkt geht das nicht.

Aber man kann entweder statt der einzelnen Variablen ein Feld nehmen,
dann kann darüber iteriert werden.

Alternativ könnte man die globalen Variablen lassen wie sie sind und
zusätzlich ein Feld mit Zeigern darauf definieren, und in einer
Schleife über die Zeiger die Variablen anfassen.

von Jonas (Gast)


Lesenswert?

Wenn ich dich richtig verstanden habe willst du je nach AkkuNr die 
globale Variable wählen.

Entweder du fragst per If oder Switch die übergebene AkkuNr ab und 
wählst so die richtige Variable oder du nutzt zB ein Array...

AkkuStrom[1] -> Strom für Akku 1
AkkuStrom[2] -> ...

Hoffe so meintest du es...

von Wayne I. (mustang)


Lesenswert?

Klaus Wachtler schrieb:
> Alternativ könnte man die globalen Variablen lassen wie sie sind und
>
> zusätzlich ein Feld mit Zeigern darauf definieren, und in einer
>
> Schleife über die Zeiger die Variablen anfassen.

Wie darf ich das verstehen? und wie müsste ich das programmtechnisch 
lösen?
Ich kann mir darunter grad gar nichts vorstellen.


Jonas schrieb:
> AkkuStrom[1] -> Strom für Akku 1
>
> AkkuStrom[2] -> ...

das ist natürlich auch eine Möglichkeit, wenn ich dich reichig verstehe, 
müsste ich dazu eine Array mit 4 Speicherplätzen anlegen und jedem Akku 
eine Speicherstelle zuweisen. Das muss ich gleich mal probieren, danke 
für den Denkanstoß!

von Klaus W. (mfgkw)


Lesenswert?

Dirk K. schrieb:
> Wie darf ich das verstehen? und wie müsste ich das programmtechnisch
> lösen?
> Ich kann mir darunter grad gar nichts vorstellen.

So ähnlich, wie es Jonas wahrscheinlich auch meint.

Halt nicht so:
1
int  StromAkku1;
2
int  StromAkku2;
3
...

sondern stattdessen so:
1
int  StromAkku[4];
2
...
3
   for( i = 0; i<4; i++ )
4
   {
5
      StromAkku[i] = ...;
6
   }

Nicht vergessen: Bei Feldern hat das erste Element die Nummer 0,
man zählt also nicht von 1 bis 4, sondern von 0 bis 3.

von Wayne I. (mustang)


Lesenswert?

Alles klar, dann habe ich es verstanden wie ihr das meint!

Werde ich jetzt gleich mal probieren. Danke für euere Hilfe!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.