Hallo, ich habe ein DOG-M 63 laufen. Das auch soweit funktioniert (nach einigen init. problemen) Nun frage ich einen ADC Wert ab und lasse ihn mir erst einmal direkt ausgeben. Nun habe ich das Problem, dass wenn der AD Wert 100 übersteigt und wieder unter 100 fällt quasi die 0 stehen bleibt ebenso bei dem Wechsel von 10 auf 9...wenn ich also wieder 0 erreiche zeigt es 000 an. Wenn ich vor dem schreiben ein clear einfüge, dann schimmert der ADC Wert nur noch durch! Hier mal meine Main mit clear in der Schleife (ADC-Wert schimmert durch) Ich habe nun auch schon ein delay dahinter eingefügt ohne Besserung! Für Vorschläge an was es liegen könnte, wäre ich dankbar. int main(void) { lcd_init(); lcd_clear(); ADC_Init(); while (1) { char Buffer[30]; result = ADC_Read(2); lcd_clear(); lcd_goto_xy( 8, 2 ); itoa(result, Buffer, 10); lcd_write(Buffer); } } mfg Frank
Frank schrieb: > Nun frage ich einen ADC Wert ab und lasse ihn mir erst einmal direkt > ausgeben. Nun habe ich das Problem, dass wenn der AD Wert 100 übersteigt > und wieder unter 100 fällt quasi die 0 stehen bleibt ebenso bei dem > Wechsel von 10 auf 9...wenn ich also wieder 0 erreiche zeigt es 000 an. zutreffende Analyse > Wenn ich vor dem schreiben ein clear einfüge, dann schimmert der ADC > Wert nur noch durch! > > Hier mal meine Main mit clear in der Schleife (ADC-Wert schimmert durch) > Ich habe nun auch schon ein delay dahinter eingefügt ohne Besserung! Du gehst das 'Problem' falsch an. Die Lösung liegt nicht darin, das Display zu löschen, sondern dafür zu sorgen, dass diese überzähligen Zeichen bei einem Wechsel der angezeigten Stellen auch wieder gelöscht werden. Zum Beispiel dadurch, dass man hinten nach einfach noch ein paar Leerzeichen ausgibt, die eine eventuell von vorher noch sichtbare überzählige Ziffer automatisch löschen. Überschreibe ich 100 mit 99, dann bleibt mir 990 an Display stehen. Überschreibe ich 100 aber mit "99 ", dann überschreibt mir das Leerzeichen die 0 und es steht tatsächlich 99 am Display. Oder aber, in dem man den Wert immer rechtsbündig in einem Feld ausgibt und entweder führende 0-en akzeptiert oder anstelle von führenden 0-en wieder Leerzeichen hinmalen lässt. > while (1) > { > char Buffer[30]; > result = ADC_Read(2); > lcd_clear(); lcd_clear, weg damit > lcd_goto_xy( 8, 2 ); > itoa(result, Buffer, 10); zb so sprintf( Buffer, "%4d", result ); anstelle von itoa. > lcd_write(Buffer); > } > } > > mfg Frank
ah ok, hab es jetzt mit auffüllen von Leerzeichen gemacht aber hat geklappt :) so schnell kann es gehen :) danke
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.