PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger: Vereinfachung



jojo.glaser
06.07.2006, 15:14
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!!!!!!!!


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)

uwegw
06.07.2006, 15:39
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])

PicNick
06.07.2006, 15:47
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 ];
}

jojo.glaser
06.07.2006, 15:58
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!

uwegw
06.07.2006, 16:52
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-Programmierung:_Arrays_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!

jojo.glaser
06.07.2006, 18:32
Sorry versteh ich net

Wie muss dann der Code aussehen, so dass ich ihn gegen den alten code austauschen kann?

uwegw
06.07.2006, 18:55
Ê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.

jojo.glaser
06.07.2006, 20:07
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

uwegw
06.07.2006, 21:03
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...