binär to string

Gast #895115
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.
#895130
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren