Hallo, ich will mit Hilfe des Modulo-Operators eine Integer-Zahl in eine Dezimalzahl "wandeln" (Format xx.y) und über UART bzw LCD ausgeben. Mein Wert bevor ich ihn weiter verarbeite hat z.B. 316 nach dem Modulo ist der Wert 31.5 Woran liegt das? Hier kommt noch der Code dazu, ist derzeit noch alles sehr experimentell gehalten.
1 | while (1) |
2 | {
|
3 | adcValue = ADC_Read(ADC_CHANNEL); |
4 | |
5 | //////////////////////////////////////////////////////////////////////////
|
6 | //ADC-Wert ausgeben
|
7 | uart_puts("ADC-Wert: "); |
8 | uart_puts(itoa (adcValue, s, 10)); |
9 | uart_putc('\0'); |
10 | lcd_clear(); |
11 | |
12 | lcd_setcursor(1,1); |
13 | lcd_string("ADC-Wert: "); |
14 | lcd_string(s); |
15 | |
16 | //////////////////////////////////////////////////////////////////////////
|
17 | //Druckwert ausgeben (noch nicht Dezimal)
|
18 | uart_puts(itoa (convert_ADC(adcValue), s, 10)); |
19 | uart_putc('\0'); |
20 | //Ergebnis => 316
|
21 | |
22 | //////////////////////////////////////////////////////////////////////////
|
23 | //Dezimaler Druckwert
|
24 | uart_puts("Druck: "); |
25 | uart_puts(itoa (convert_ADC(adcValue/10), s, 10)); |
26 | uart_puts("."); |
27 | uart_puts(itoa (convert_ADC(adcValue%10), t, 10)); |
28 | uart_putc('\0'); |
29 | //Ergebnis => 31.5
|
30 | |
31 | lcd_setcursor(2,1); |
32 | lcd_string("Druck : "); |
33 | lcd_string(s); |
34 | lcd_string("."); |
35 | lcd_string(t); |
36 | lcd_string(" bar"); |
37 | //Ergebnis => 31.5
|
38 | |
39 | uart_putc('\0'); |
40 | _delay_ms(1000); |
41 | }
|
Ausgabe in hterm ADC-Wert: 305 316 Druck: 31.5 Grüße