Moin zusammen, ich habe jetzt am Wochenende geschafft ein LCD Modul anzusteuern. Und das funktioniert auch alles wunderprächtig :-). Doch nun will ich nen Schritt weiter gehen und meine Variablen-Inhalte ebenfalls ausgeben. Also habe ich einfach den Code meiner UART_put_integer etwas angepasst. Das Funktioniert auch soweit, nur habe ich das Problem, wenn ich zum Beispiel i=1 sende, dann zeigt er mir 1-- an. Bei i=100 zeigt er mir 100 an. Wie kann ich die benötigten Stellen auf dem LCD dynamisch halten? void LCD_send_Integer(const int16_t var) { char s[7]; LCDstring( itoa( var, s, 10 ),3); } void LCDstring(uint8_t* data, uint8_t nBytes) //Outputs string to LCD { register uint8_t i; // print data for(i=0; i<nBytes; i++) { LCDsendChar(data[i]); } } Vielen Dank für eure Ratschläge Grüße Marcel
hi, itoa erzeugt ja ein c-string sprich der ist null-terminiert... vielleicht LCDstring( itoa( var, s, 10 ), strlen( s ) ); machen... lg ;)
Marcel schrieb:
> Gute Idee :)
Schlechte Idee.
Schreib deine String Funktion richtig. Die braucht nämlich die Länge gar
nicht explizit zu kennen.
1 | void LCDstring( const char * data) //Outputs string to LCD |
2 | {
|
3 | while( *data ) |
4 | LCDsendChar( *data++ ); |
5 | }
|
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.