-
-
Moderator
Robotik Einstein
text ist schonmal nicht schelcht.
ich hab mal nen ansatz zum nachdenken für dich:
du hast eine zahl die den batteriezusatnd beschreibt. am besten wäre ein int oder ein char.
wenn du aus diesem die einzelnen ziffern extrahierst (dazu unten mehr), macht das die sache einfacher. beispiel: aus 123 wird 1 und 2 und 3
jetzt such n dem display-zeichensatz nach der position der null. direkt dahinter kommen 1,2,3... usw. wenn du jetzt den positionswert der null zu einer zahl die du so extrahiert hast addierst, kommst du automatisch auf das richtige, auszugebende zeichen. beispiel: wir nehmen an, dass die null den wert 48 (oder 0x30) hat. jetzt wollen wir die zahl 140 ausgeben:
zuerst zerlegen: 1 4 0
jetzt die eins ausgeben:
48 + 1 = 49 --> wert für eine eins auf dem display
48 + 4 = 52 --> wert für eine vier auf dem display
48 + 0 = 48 --> wert für eine null auf dem display
jetzt brauchen wir nur noch eine methode, um die ziffern aus der ganzen zahl rauszubekommen. diese die ich dir jetzt zeige geht nur für ganzzahlen, also chars und ints. in diesem falle nehme ich einen char als beispiel, die integer funktionieren genauso (bloss dass die zahlen zwei stellen mehr haben).
Beispiel: 246
zuerst wollen wir die hunderterstelle haben.
unsigned char hunderter(unsigned char zahl){
return zahl/100;
}
das war schonmal recht einfach. die zahl wird durch 100 geteilt, der rest fällt weg, und die hunderter bleiben. 246 / 100 = 2
jetzt die zehner:
unsigned char zehner(unsigned char zahl){
return (zahl - (100 * hunderter(zahl)))/10;
}
zuerst wird hundert mal die hunderterstelle abgezogen und dann der rest durch 10 geteilt.
246 - 100*2 = 46
46 / 10 = 4
jetzt nur noch die einerstelle:
unsigned char einer(unsigned char zahl){
return zahl - (100*hunderter(zahl)) - (10*zehner(zahl));
}
es werden erst hundert mal die hunderterziffer, und dann zehn mal die zehner-ziffer abgezogen.
246 - 100*2 - 10*4 = 6
und dann kannst du das so machen wie oben beschreiben. den zeichenwert der null addieren ("offset") und ans display ausgeben.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen