ich möchte auf einem OLED-Display eine Zeitanzeige (00:00:00) darstellen und diese per Tastendruck verändern können.
Sobald ich den Taster gedrückt lasse werden die Zahlen leider nicht nacheinander, sondern sprunghaft und auch verpixelt dargestellt. Es erfolgt also keine aufeinander Folge der Zahlendarstellung auf dem Display. Eher zufällig werden Zahlen auf-, oder absteigend, je nachdem ob ich Taster hoch, oder Taster runter betätige dargestellt.
Beispiel: ich drücke den Taster und es soll hoch gezählt werden. Die Darstellung beginnt bei 0. Ich drücke den Taster und lasse diesen gedrückt. Jetzt wird 5 angezeigt und als nächstes die 14, dann die 27, dann 34 ect. Es werden alle Zahlen dazwischen nicht mit angezeigt. Klar, es kann natürlich sein, das die Zahlen, bez. der Wert der Variable zu schnell verändert wird und das Display in seiner Ausgabe nicht hinterherkommt.
Wenn ich den Taster immer nur kurz drücke, wird eine aufeinander Folge von zahlen korrekt dargestellt. Ich möchte aber dazu in der Lage sein den Taster gedrückt zu lassen, um mir so das ständige drücken des Taster zu ersparen.
Leider habe ich noch keine Lösung für mein Problem gefunden. Zur Zeit versuche ich das Problem mit dem Einsatz der Funktion millis() zu umgehen. Also nur zu einer gewissen Zeit die Erhöhung/Verringern der Zahl zu ermöglichen. Wenn ich z.B. 1 Sekunde einstelle, sprich nur jede Sekunden erhöht wird, dann Funktioniert die Darstellung. Aber das hat natürlich zur Folge, dass das hoch/runter Zählen einfach viel zu lange dauert.
Ich würde mich sehr über eine Hilfestellung sehr freuen und möchte mich im Voraus für deine Anteilnahme bedanken.
Gruß
Sebastian
Ps.: Ich nutze ein OLED-Display mit der Bib SSD1309, SPI
Ich habs hinbekommen indem ich einfach die clear()-Funktion an unterschiedlichen stellen meines Programmiercodes eingefühgt habe und dann geschaut habe, ob das einen Einfluss auf das Flackern hat. Irgendwan hat es dann geklappt. Warum es dann so und nicht anders geklappt hat, kann ich dir nicht sagen. Deswegen und weil ich dann meinen Programmiercode, der für jmd anderen geschrieben wurde, hier als Beispiel hätte veröffentlichen müssen, bin ich nicht näher darauf eingegangen.
nein, das war ein ganz anderes Problem, welches ich zu diesen Zeitpunkt hatte. Da habe ich auch ein OLED-Display mit der Bib SSD1305 und nicht SSD1309 verwendet. Ob es da jetzt einen große Unterschiede gibt, weiß ich nicht genau. Ich hab natürlich schon mal geschaut, ob ich in meinen alten Programmiercode eine Lösung finde.
Leider nicht. Hat aber wahrscheinlich auch damit zu tun, dass ich da anders vorgegangen bin, bez. kein Taster zum Einsatz kam. Und somit auch nicht die Möglichkeit die Zahlen per Dauerdrücken des Tasters hoch/runter zählen zu lassen.
Ich schätze, dass dieser Fehler aber wieder mit der Art und Weise, wo und wie ich in meinem Programmiercode vorgehe auftritt.
Ja, jetzt könnte ich euch gerne den Programmiercode hier hochladen. Ich glaube aber, dass das nach meiner Erfahrung her zu mehr Verwirrung führen würde. Ich müsste dann wahrscheinlich erst mal im Deteil erklären, was mein Programmiercode macht, da ich nur ein Teil des gesamten Projektes hier veröffentlichen würden....
Tja, da hat wohl irgendwo eine Blockade im Code zugeschlagen oder gar ein bouncen.
Aber Ohne Code ist das raten ins blaue - und das sowas ausarten kann, hab ich grad an anderer Stelle erlebt, wie man aneinander vorbei redet.
Das geht nicht um eine Verpflichtung, sondern darum, wie man sich in diesem Vorum verhält. Dazu solltest du zwingend mal den Beitrag "diese Forum nutzen" durchlesen.
Dann verstehst du evtl. auch, was dir geschrieben wurde.
Ich hab meine Zeitanzeige/Zeiteinstellung mal neu programmiert. Eigentlich nichts besonderes. Wollte meine Lösung dennoch hier teilen. Vielleicht könnte es in Zukunft jmd weiter helfen.
Ehrlich gesagt steige ich nicht mehr so ganz durch meinen alten Code durch. Da ich aber eh die schrittweise Erhöhung der Sekunden wechseln wollte, hab ich das gleich mit gemacht. Jetzt werden die Sekunden in 5er Schritten erhöht/verringert.
So funktioniert diese und jetzt werd ich das mal in meinuhrsprüngliches Programm einbauen. Hoffentlich bekomme ich das auch hin.
Sofern ihr Verbesserungvorschläge meines Programmier-Stils ect. habt, dann gerne raus damit. Lerne immer gerne dazu. Danke im Voraus.
mach da const draus. Werte die sich nicht ändern: const.
Das hab ich doch auch schon mal gesehn - das ist Mist. Und das wurde Dir IMHO auch schon mal gesagt.
In den Beispielen: blinkWithout delay und dann die Daten ohne delay und mit debounce auf millis()-Basis.
Und das versteh ich nicht.
Bist Du sicher, das das funktioniert?
Wenn Sekunden 3 ist und du davon 5 abziehst....
@my_xy_projekt
Du hast absolut recht. Ich habe die delay()-Funktion gegen millis() ausgetausch. Das habe ich auch in meinen anderen Programmiercode so gemacht und sehe an, dieser funktioniert jetzt ohne das sprunghafte Anzeigen der Zahlen und auch ohne die Verzerung der Zahlen bei der Darstellung!