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.