-
Anfänger: Vereinfachung
Hi,
Ich mein SPeicher von meinem AVR ist voll und ich bräuchte ne Vereinfachung für den folgenden Code.
Ich binn noch Anfänger und hab kene Ahnung, wie man das vereinfachen kann.
Kannst du mir da Weiterhelfen?
Vielen DANK!!!!!!!!
Code:
if(Dimmer1LOLin < 17)
{
Dimmer1LOLin = Dimmer1LOLin + 1;
if(Dimmer1LOLin == 1)
{ Dimmer1LO = Lin1; }
if(Dimmer1LOLin == 2)
{ Dimmer1LO = Lin2; }
if(Dimmer1LOLin == 3)
{ Dimmer1LO = Lin3; }
if(Dimmer1LOLin == 4)
{ Dimmer1LO = Lin4; }
if(Dimmer1LOLin == 5)
{ Dimmer1LO = Lin5; }
if(Dimmer1LOLin == 6)
{ Dimmer1LO = Lin6; }
if(Dimmer1LOLin == 7)
{ Dimmer1LO = Lin7; }
if(Dimmer1LOLin == 8)
{ Dimmer1LO = Lin8; }
if(Dimmer1LOLin == 9)
{ Dimmer1LO = Lin9; }
if(Dimmer1LOLin == 10)
{ Dimmer1LO = Lin10; }
if(Dimmer1LOLin == 11)
{ Dimmer1LO = Lin11; }
if(Dimmer1LOLin == 12)
{ Dimmer1LO = Lin12; }
if(Dimmer1LOLin == 13)
{ Dimmer1LO = Lin13; }
if(Dimmer1LOLin == 14)
{ Dimmer1LO = Lin14; }
if(Dimmer1LOLin == 15)
{ Dimmer1LO = Lin15; }
if(Dimmer1LOLin == 16)
{ Dimmer1LO = Lin16; }
}
Edit: mit Code-Tags sieht das viel hübscher aus (PicNick)
-
Was soll das Programm denn bewirken? Ne Möglichkeit, die zumindestens schöner aussieht, wäre case. Aber es könnte auch noch ganz anders gehen...
EDIT: wieso packst du die Lin1... Variblen nicht in ein Array? Dann kannst du den ganzen Krempel mit
Dimmer1LO = Lin[Dimmer1LOLin]
erledigen. (wobei Lin hierbei das Array ist, in dem die Werte von Lin1 bis Lin16 stehen. Deklariert wird es über
int Lin[16];
ACHTUNG! Es wird von null an durchgezählt, also Lin[0] bis Lin[15])
-
Was is'n das "Lin1" .... "Lin16" ?
Schön wäre:
uint8_t Lin [16];
"Lin1 = 15 " (z.B.) hiesse dann "Lin [1] = 15" (z.B.)
Manche Gurus sagen dann "array" dazu.
Dann wär' die Schleife hübscher:
if(Dimmer1LOLin < 17)
{
Dimmer1LOLin++;
Dimmer1LO = Lin [ Dimmer1LOLin ];
}
-
Was is'n das "Lin1" .... "Lin16" ? das sind Variablen
Ich hab keine ahnung von harry oder was das ist
Kannst du mir den Text vereinfachen?
Dann gug ich mia das an, dann lerne ich am meinste.
Das währe nett!
-
Ein Array ist quasi ne Tabelle, in der man Daten ablegen kann. Die einzelnen Elemente werden über eine Zahl als Index angesprochen. Dies kann sowohl mit eine Konstante (Lin[5]) als auch mit einer Variablen geschehen (Lin[idx]).
http://de.wikibooks.org/wiki/C-Progr...ys_und_Strings
PicNick hat schon das Wesentliche an Code geschrieben. Du muss vorher nur das Array mit Werten füllen, also
Lin[1]=34;
Lin[2]=73;
Lin[3]=11;
...
und dran denken, es wird ab Null gezählt!
-
Sorry versteh ich net
Wie muss dann der Code aussehen, so dass ich ihn gegen den alten code austauschen kann?
-
Ês belibt dann nciht bei einer Änderung dieser Stelle. Da sich die Datenstruktur ändert, muss auch der Rest des Programms geändert werden, überall dort, wo die Lin... Variablen verwendet werden.
-
Wenn ich das richtig verstehe die Programm stelle ersetzen und überall, wo ich diese variable verwend abändern.
Ich bin noch neuling, kannst du mir mal das zusammenschreibn, dass was ich ersetzen musss?
Danke
-
btw: was hast du eigentlich für nen AVR, und was muss er sonst noch alles erledigen, dass der Speicher voll ist?
Poste mal das gesamte Programm, dann ists einfacher zu sagen...