Hallo zusammen, ich versuche mich gerade ein bisschen mit Mikrocontrollern sowie der Programmiersprache C auseinander zusetzen. Nun stoße ich leider an meine Grenzen: Ich habe das Entwicklungsboard von ehajo.. Entwicklungumgebung AtmelStudio Verwendeter MC Atmega328P Ein LCD Display habe ich erfolgreich angeschlossen und initialisiert. Ich kann auch schon gewünschte Texte mit einem String an das Display senden. Jetzt habe ich mir einen AD Wandler programmiert und möchte mir gerne den Inhalt der Variable auf dem LCD-Display anzeigen lassen. Dafür benötige dann also den Konverter itoa .. Soweit so klar... Jetzt meine Frage: Wenn ich einen 10 bit Wandler habe, kann ich ja logischerweise Werte im Bereich von 2^10 darstellen.. also 0 bis 1023 richtig? Lade ich mein Programm in den Kontroller zeigt er mir zunächst 0 An.. drehe ich an dem Poti steigt der Wert bis 1023.. Drehe ich das Poti nun zurück kriege ich ein utopischen Wert auf dem LCD angezeigt.. (irgendeinen 4stelligen Wert bis zu 9000... Drehe ich den Poti wieder in Nullstellung, bleibt immer ein anderer Wert auf dem Display stehen.. z.B 230... Kann mir jemand sagen wo der Fehler liegt?? Ich kann mir eigentlich nicht vorstellen das der Wert tatsächlich bei 8000 liegt?! Gerade da es sich ja um einen 10 bit Wandler handelt Im Anhang ein Screenshot von meinem verwendeten Programm.. Bin über jede Hilfe dankbar..
Das Problem ist ganz einfach. bei den neuen Werten werden nicht 4 Zeichen geschrieben sonder weniger. schreib mal lcd_string( Buffer ); lcd_string(" "); Gruß JensM
Eine Theorie dazu: Nach itoa(1023, buffer, 10) steht 1023 auf dem Display. itoa(99, buffer, 10) gibt einen 2 Zeichen langen String aus. lcd_string("99") überschreibt nur die ersten zwei Ziffern auf dem Display, die anderen beiden bleiben unverändert - übrig bleibt "9923".
Hallo Jens! Danke für die Hilfe du hast recht! Es funktioniert.. Kannst du mir kurz erklären warum?
Solche Fehler macht man, wenn man anstatt selber zu programmieren und zu verstehen was man da macht, sich seine Programme aus Beispielen "zusammen klaut". Früher hat man sich hingesetzt und probiert und durch logisches Denken seinen Fehler gefunden. Heute reicht die intellektuelle Fähigkeit gerade mal dazu das Internet zu bemühen und andere zu befragen und man bastelt sich seine Programme weiter aus Beispielen zusammen. Das Wort "Programmieren" dürfte in diesem Zusammenhang eigentlich gar nicht mehr benutzt werden. Das ist der Grund warum wir die Fachkräfte aus dem Ausland importieren müssen. In Indien scheint nicht jeder Internet zu haben und löst seine Probleme selber und kann dann am ende wirklich was. Wohingegen hier der Nachwuchs nicht aus den BastlerSchuhen herauskommt.
Alexander V. schrieb: > Kannst du mir kurz erklären warum? Grob gesagt: Das Display knippst nur Leuchten da an und aus, wo man ihm sagt dass es Leuchten an und aus knipsen soll. Sagt man ihm also nicht, dass es Leuchten an/aus knipsen soll tut es das auch nicht. SATAN schrieb: > Früher hat man sich hingesetzt und probiert und durch > logisches Denken seinen Fehler gefunden. Und der TE hat gefragt, was daran falsch sein soll vermag ich nicht zu sagen. Ich finde es im Zeitalter des Internets völlig legitim zu fragen. Genau das ist ja der Sinn dieses Forums.
:
Bearbeitet durch User
Michael K. schrieb: > Genau das ist ja der Sinn dieses Forums. Habe ich auch nicht angezweifelt. Der Sinn einer Zigarette ist es, geraucht zu werden. Ob das Sinnvoll ist oder nicht, steht auf einem anderen Blatt.
SATAN schrieb: > Michael K. schrieb: >> Genau das ist ja der Sinn dieses Forums. > > Habe ich auch nicht angezweifelt. Der Sinn einer Zigarette ist es, > geraucht zu werden. Ob das Sinnvoll ist oder nicht, steht auf einem > anderen Blatt. Ja, dein Beitrag hat nur nicht wirklich dem TE geholfen. Du wirfst ihm, im Prinzip, hier nur vor zu fragen: SATAN schrieb: > …Heute reicht die intellektuelle > Fähigkeit gerade mal dazu das Internet zu bemühen und andere zu > befragen… Aber was an deinem Post sollte nun zur Lösung des Problems des TEs beitragen?
Michael K. schrieb: > Aber was an deinem Post sollte nun zur Lösung des Problems des TEs > beitragen? Früher hat man an solcher Stelle gesagt "Ohne Fleiß kein Preis". Falls das hier eine zu komplizierte Metapher sein sollte, kann man auch sagen "vor dem Fragen einfachster Fragen sollte man sich selbst um das Verstehen der Dinge bemühen, kurzum selbständig werden." W.S.
Man kann auch die Länge des Strings als Kriterium nehmen und durch führende Leerzeichen auf z.B. vierstellig auffüllen. Dann muss man nicht immer das ganze Display löschen und es bleibt trotzdem kein Müll auf dem LCD.
W.S. schrieb: > Früher hat man an solcher Stelle gesagt "Ohne Fleiß kein Preis". Früher sagte man auch: "Fragen kostet nichts." Anscheinend hat sich das auch geändert. :(
W.S. schrieb: > Falls das hier eine zu komplizierte Metapher sein sollte, kann man auch > sagen "vor dem Fragen einfachster Fragen sollte man sich selbst um das > Verstehen der Dinge bemühen, kurzum selbständig werden." Sehe ich auch so. Satan hat recht. Jesus was für ein Satz :-)
Michael K. schrieb: > Früher sagte man auch: "Fragen kostet nichts." > Anscheinend hat sich das auch geändert. :( Nein, das trifft immer noch zu. Eine Antwort dagegen kann durchaus was kosten. :-)
Wenn man immer nur im Internet andere nach der Lösung fragt, läuft man Gefahr, nur bestehendes Wissen zu reproduzieren. Damit sind der Innovation durch selbständiges Denken Tür und Tor versperrt.
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.