Forum: Mikrocontroller und Digitale Elektronik binär to string


von Newbie (Gast)


Lesenswert?

Hi Profis,

Ich bin zu blöd für folgende Aufgabe:

Ich will den AD-Wandler auslesen und den erhaltenen Wert erst umrechnen, 
dann als String an ein LCD übergeben.

Mein geplantes Vorgehen

ADCL und ADCH auslesen und - wie im Tutorial beschrieben - die beiden 
Register verbinden. Somit erhalte ich eine binäre 16Bit Zahl (wenn ich 
nicht irre) mit dem Maximalwert von 1023 dezimal.

Nun muss ich den Wert so umrechnen, dass 0 bis 1023 einer Skala von 00,0 
bis 30,0 entsprechen. Dieses Ergebnis sollte dann als String an ein LCD 
gesendet werden.

Hiilfee.

Mein Problem ist weniger das Umrechnen, als das Wandeln von binär in 
einen String.

von Philipp B. (philipp_burch)


Lesenswert?

Programmiersprache?

von Newbie (Gast)


Lesenswert?

Bitte vielmals um Entschuldigung!! C

von Philipp B. (philipp_burch)


Lesenswert?

Ungetestet:
1
char buf[5];
2
char *ptr = buf;
3
uint32_t val = (ADC * 300UL) / 1024;
4
char c;
5
uint8_t dig = 100;
6
for (uint8_t i = 0; i < 3; ++i) {
7
  c = '0';
8
  while (val >= dig) {
9
    ++c;
10
    val -= dig;
11
  }
12
  *++ptr = c;
13
  if (!i) *++ptr = ',';
14
}
15
*ptr = 0;
16
//buf sollte nun den Zahlenwert beinhalten.
Ist wohl nicht optimal, sollte aber so in der Art funktionieren. 
Allerdings wirst du mit der Rechnung nie 30,0 erreichen, sondern nur 
29,9. Willst du wirklich bis 30, solltest du oben mit 301 
multiplizieren...

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
Noch kein Account? Hier anmelden.