hallo ich baue mir eine elektronische last. nun habe ich zwei 10bit wandler mit denen ich die spannung und den strom messe. aus dieser spannung und dem strom erechne ich die leistung. nun mein problem: kann mir jemand vieleicht einen tip geben wie ich am besten die leistung "stellen richtig" auf meinem display anzeige? z.B spannung vom wandler ist 1V mein unsigned long wert ist dann ja 1000 strom vom wandler 500mA, mein wert 500 1000*500=500000 auf dem display sollte dann stehen 0.5W usw. ich habe mal im anhang mein lösungsversuch. vieleicht kann mir jemand einen tip für eine profesionellere,elegantere lösung geben. besten dank tobias
Hallo, es führen viele Wege nach Rom... Nur ein paar Anregungen: (habe selbst nichts ausprobiert) az_zeichen=sprintf(buf,"%lu",watt); --> az_zeichen=sprintf(buf,"0%lu",watt); das bringt eine führende Null für den 1. Fall, dann kannst Du die 3 Fälle gleich behandeln (die Länge ist jetzt im Fall 2 und 3 um eins größer, k und l um 1 erhöhen!) dann kannst du die Fallunterscheidung anfangs machen und alle 3 Fälle gleich behandeln: if( watt <= 999) {k=0;l=1;} if((watt >= 1000)&&(watt <= 9999)){k=1;l=2;} if((watt >= 10000)&&(watt <= 99999)){k=2;l=3;} evtl. ist l immer k+1, testen ! for(j=0;j<1;j++){ --> for(j=k;j<l;j++){ //0 --> k, 1 wird zu l (kleines L) Statt der 3 if-Zeilen kannst Du auch ein Konstrukt mit ? machen: k=(watt<=999)?0:(watt<=9999)?1:2 oder zumindest so ähnlich oder einfach die Länge des Strings minus einer Konstanten (k=länge-3).
hallo az_zeichen=sprintf(buf,"0%lu",watt); verstehe ich das richtig das ich bei der sprintf() fkt. das 0 in diesem bsp. durch k ersezte, und wenn k=0 -> ausgabe auf lcd 0.xxx und wenn k=1 -> ausgabe auf lcd x.xxx und wenn k=2 -> ausgabe auf lcd xx.xx das wäre wirklich eleganter. weist du wie es mit dem speicherbedarf aussieht von sprintf()? auf jeden fall besten dank.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.