Gast
#2379314
Hallöchen,
folgendes Problem. Ich stelle eine am ADC-Eingang gemessene Spannung
(0-5V) auf einem HD44780-LC Display dar. Dies mache ich folgendermaßen:
int main( void )
{
char buf[5];
uint32_t adc;
ADC_Init();
while( 1 )
{
lcd_init(LCD_DISP_ON);
adc = ADC_Read(0);
adc *= 500;
adc /= 1022;
sprintf(buf,"%ld,%0ld",adc/100,adc%100);
lcd_puts(buf);
}
}
Alles wunderbar, bisauf, dass bei einem tatsächlich gemessenen Wert, der
größer x,00 und kleiner x,10 ist, mir eine "0" fehlt. Statt z.B. 3,09V
kriege ich 3,9V angezeigt.
Klar, irgendwie logisch. Die Funktion gibt's ja auch nicht her. Aber mir
fehlt der Ansatz zur Umsetzung, um die 0 für diesen kleinen Messbereich
einzuschieben.
Mir eine Funktion zu bauen, die mir aus dem ADC-Wert einen in diesem
Fall korrekten String mit der Spannung zurückgibt, ist hoffnungslos
daneben gegangen. Jeder Versuch führte zur Ausgabe von tollen
ASCII-Zeichen, jenseits des Alphabets.
Ich weiß, dieses Thema ist hier 1000mal durchgekaut worden und im Wiki
gibt's einen tollen Beitrag zur Festkommaarithmetik, aber dennoch hab'
ich mir bisher dazu keine Lösung vorstellen können.
Bin dankbar für einen kleinen Tipp.
Gruß,
Hans