Du kannst auch die Zeit von 1000 ms reduzieren. Nur irgendwann ist das Display nicht mehr schnell genug, daher ist das nicht die beste Lösung.
Ich habe mich da damals schon mit dem Problem beschäftigt und eine Funktion implementiert.
z.B. die Variablen 'menu_button_down' und die anderen Button Variablen auch zählen, nicht nur bis 1 sondern bis maximal 255.
Sprich wenn du deine Funktionen nach diesem Schema anpasst, sollte das Problem nicht mehr so groß sein:
Nun wird nicht -1 gerechnet sondern maximal -5 da die Button Press Time auf 200ms steht, werden 5 Tasten drücke Pro Sekunde maximal möglich sein.
Das geht natürlich auch mit + und month() und day() und und und.
Das ist das "dumme" oder "schöne" an der Programmierung, es gibt immer 1000 Lösungen und noch viel mehr, nur die eine bzw. die wenigen zu finden, die dich weiterbringen das ist nicht immer ganz leicht.
Beispiel, dass dabei ist, wurde wesentlich vereinfacht und benötigt weniger Flash speicher bei gleichem Funktionsumfang
Funktionen die nicht verändert werden müssen befinden sich in einer separaten Datei
Status: Beta Version
@skorpi08
Vielleicht kannst du es dir nochmal anschauen. Es ist wesentlich übersichtlicher geworden. Neue Funktionen lassen sich sehr einfach einbinden.
Ok im Beispiel muss die boolean CTR_check_button(); von der "no_chages_here" in die Hauptdatei kopiert werden, am besten unter die Deklaration vom LiquidCrystal Objekt, dann läuft es.
Bei Version 1.01 läuft auch das anderes
[edit]
Ist das Beispiel so übersichtlicher ?
[/edit]
Ja da bin ich noch am überlegen wie ich das machen kann.
Leider habe ich das noch nicht hinbekommen, würden die Variablen nicht im Flash gespeichert wäre es einfacher. Aber da dadurch die Variablen als 'const' deklariert werden, kann ich sie Dynamisch nicht mehr erweitern.
Werden nun automatisch aufgerufen, also alles was man oben definiert in der Liste definiert wird aufgerufen. Wozu dient denn die Funktion set_Date(tmp) und wieso wird an die Funktionen tmp übergeben, tmp ist ja nur ein Zahlenwert.
Ich sehe gerade wieder das deine Buttons in der Start Funktion sind die nur einmal ausgeführt wird. Du kannst dir das wie ein Setup vorstellen das nur bei der Initialisierung geladen wird.
CTR_start_func muss einmal aufgerufen werden, da hier dann festgelegt wird, welche Funktion nach dem Tastendruck und dem ersten Durchlauf wieder aufgerufen wird. Daher kann ich diese Funktion auch nicht weg optimieren. Zum anderen kannst du die Funktion mit if(!CTR_start_func()) { verwenden, wenn du selber noch Werte einmalig definieren willst. Ansonsten kann man immer CTR_start_func(); verwenden.
So, ich kann erst morgen Abend weiter Verbesserungen liefern.
komme bei eurem diskutieren grad nicht mehr mit, darum habe ich mich auch still verhalten. Habt ihr den den Sketch fertig programiert bekommen und wäre er etwas für mich oder sollte ich lieber bei dem bleiben, welchen wir am Wochenende erstellt haben?