Hallo, irgendwie steh ich hier aufm schlauch. ich möchte ein float wert vom adc wandler auf ein 7-segment display geben. jedes segment wird für sich angesprochen über i2c. bei 5Volt und 10Bit auflösung float volt=(adc_wert*0.0048828125); hier werden die bytes für die segmente übertragen. led_out (0x00,0x27,ziffer[z1],ziffer[z2],ziffer[z3],ziffer[z4]); (z1-z4 für die ziffer die zum Segment soll) das komma selber interessiert mich nicht, ich möchte nur die stellen der float zahl für sich haben. also bei einem float wert von 3,42 z1 = 0 z2 = 3 z3 = 4 z4 = 2 danke schon mal gruß Alex
Alexander schrieb: > float volt=(adc_wert*0.0048828125); Besser:
1 | uint16_t val; |
2 | uint8_t digit[3]; |
3 | |
4 | val = (adc_wert * 500UL) >> 10; |
5 | digit[0] = val % 10; |
6 | val /= 10; |
7 | digit[1] = val % 10; |
8 | digit[2] = val / 10; |
Peter
ahhh, sehr schön. werd ich mir mal einverleiben ^^ genau das was ich gesucht habe. DANKE
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.