PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : array verlauf auf lcd..



xlostx
15.03.2006, 01:07
Hi da!

Ich hab ein array von 1 - 24 programmiert, dieses soll mir dann 24 relais zur lautstärkensteuerung einer endstufe dienen.
Da ich gerne auch das aktuelle volumen auf einem lcd display anzeigen würde also einfach den zustand des arrays also 1-24 stufen.

Haut auch fast hin bis auf das das sobald ich in den 2stellligen berreich komme also ab 10 der wert am display beim herunterzählen nicht mehr zu einem einstelligen wird also folglich für stufe 1 steht dann 10 für 2 steht 20 usw. ab 10 passt es dann wieder.

Was muss ich tun damit beim herunterzählen die vorangegangene zahl gelöscht und wieder überschrieben wird und wie kann ich es schaffen das die zahl 1 rechtsbündig( also 01 aber die null will ich nicht umbedingt sichtbar haben aber ab 10 soll der eigntliche 0er mit 1 ersetzt werden und ab 20 mit 2)?

hier der code den ich zum übertragen auf das display benutze:

Locate 1 , 10
Lcd "VOL:" ; Str(x);

Das x ist mein array von 1 -24. Umgewandelt hab ich es doch richtig von integer zu string?

Danke schon mal herzlich!

xlostx
15.03.2006, 09:56
Na mag mir den keiner einen tipp geben ;) :-#

-=[Cassiopeia]=-
15.03.2006, 11:14
servus
also das lcd kannst du mit "cls" löschen. dann sind deine alten zahlen weg. das dauert aber ein wenig also so mind 10ms dafür einplanen.
um einen wert mit lcd auszugeben musst du ihn nicht in nen string konvertierten das geht auch so.

cls
Locate 1 , 10
Lcd "VOL: " ,x(aktuell)

zur formatierung deines arrays schau dir mal die befehle fusing oder format an.

Vitis
15.03.2006, 12:15
oder du hängst nach deiner Zahl n Leerzeichen an ;)

Locate 1 , 10
Lcd "VOL: " ;x(aktuell);" "

xlostx
16.03.2006, 11:05
He danke!

Also das mit cls geht natürlich aber dann fängt das lcd zu blinken an,wegen der schleife.

Das mit dem leerzeichen haut zufriedenstellend hin , ab 10 abwärts ist dann wirklich nur 9 ..usw. zu lesen, nur hupft die einstellige 9 auf den platz des zuvor angezeigten 1 von der 10, also ich würde mich ja schon damit zufrieden geben aber wie kann ich es schaffen das alle zahlen rechts anfangen und nicht links?

Fusing und format hab ich mir auch angeschaut aber damit bin ich nicht weiter gekommen.

Danke.

Bluesmash
16.03.2006, 11:14
du könntest es z.b. mit einer abfrage auf kleiner als 10 machen und einfach ein leerzeichen davor setzen:

if x<10 then Lcd "VOL: " ;" ";x(aktuell)
if x>=10 then Lcd "VOL: " ;x(aktuell)

gruss bluesmash

-=[Cassiopeia]=-
16.03.2006, 11:36
dann mach doch nen waitms 100 nach dem cls rein dann sollte es nicht so sehr blicken und 10 werte die sek dürfte auch genügen...
oder?

-tomas-
16.03.2006, 14:11
Fusing und format hab ich mir auch angeschaut aber damit bin ich nicht weiter gekommen.
ganz einfach

'Pseudocde:
Dim S1 as string * 10
s1 = Str(x(aktuell))
Lcd "VOL: "; Format(s1," ") '3 Leerzeichen als Platzhalter
waitms 100 'macht sich immer gut

xlostx
18.03.2006, 14:33
Danke leute, so müsste das dann hinhauen! \:D/