Na mag mir den keiner einen tipp geben
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!
Na mag mir den keiner einen tipp geben
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.
oder du hängst nach deiner Zahl n Leerzeichen an
Locate 1 , 10
Lcd "VOL: " ;x(aktuell);" "
Vor den Erfolg haben die Götter den Schweiß gesetzt
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.
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
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?
ganz einfachFusing und format hab ich mir auch angeschaut aber damit bin ich nicht weiter gekommen.
Code:'Pseudocde: Dim S1 as string * 10 s1 = Str(x(aktuell)) Lcd "VOL: "; Format(s1," ") '3 Leerzeichen als Platzhalter waitms 100 'macht sich immer gut
Danke leute, so müsste das dann hinhauen! \/
Lesezeichen