Arduino Code ohne Delay wiederholen (millies?)?
Hallo erstmal,
und zwar habe ich mir online einen Nixie Uhr Bausatz gekauft. Diesen habe ich nun zusammengebaut und die Uhr funktioniert. Gesteuert wird sie über einen Arduino Nano, den Code dafür habe ich von dem PCB Verkäufer gleich mit geschickt bekommen.
Jetzt habe ich online gesehen, dass man die Sekunden auch einmal durchlaufen lassen kann, bis der richtige Wert angezeigt wird (Siehe: https://www.youtube.com/watch?v=I2AdWwZpPzY) und wollte das jetzt selbst auf meinem Arduino einprogrammieren.
Nur leider sind meine Programmierkünste nicht nur sehr mangelhaft sondern auch eingestaubt. Ich habe im Originalcode die Stelle gefunden, bei der die Sekundenziffer geändert wird. Nur leider bin ich nicht in der Lage eine ähnliche "Animation" einzupflegen, wie sie in dem Video zu sehen ist. Ich habe Wiederholungen mit delay und millies probiert, bin dabei aber nie auf den richtigen Ast gekommen.
Findet sich ein Arduino Veteran, der mir an der Stelle mit dem Code weiterhelfen kann (Siehe Foto)?
Vielen Dank schon mal im vorraus :)
Wie gesagt, ich habe von der Materie nur wenig Ahnung, hier ist nochmal der Code und ein Foto vom PCB wenn euch das hilft (rote Kreise einfach nicht beachten).
https://pastebin.com/ih6ahDMa -> Der Code
Mittlerweile bin ich an dem Punkt das ich denke ich ein sinnvolles Stück Code mit "millies" zusammengeschrieben habe, jetzt stehe ich nur noch vor der Herausforderung das der Sekundenzeiger nur aller 1 Sekunde aktualisiert wird und man deshalb die Animation nicht sieht.
1 Antwort
Hättest mal lieber den ganzen Code posten sollen. Hier sieht man nicht, wie der Timer konfiguriert ist und wie der aufgerufen wird.
Das Prinzip der Animation ist, das du deinen Timer kürzer einstellst (die verwende bestimmt nicht einfach delay, oder?), also z.B. auf 1/100 s, du den "Originalcode" dafür aber nur bei jedem 100. Aufruf startest. Dazwischen hast du Zeit für die Animation, mit jedem Aufruf ein Animationsschritt, so dass die 10 Schritte insgesamt 1/10 s dauern. Dafür brauchst du eine Statusvariable, die anzeigt, ob gerade eine Animation läuft und welcher Animationsschritt gerade aktiv ist. Dazu noch, welche Stelle gerade animiert wird.
https://pastebin.com/62F1SgJw Versuche mal dein Glück, das ist natürlich vollkommen ungetestet. das ANI_REPEAT*0,3s sollte die Anzeigedauer jedes Animationsschrittes sein.
Nein, delay habe ich bereits probiert, allerdings wird der Chip nebenbei verwendet und es wird ein Fehler ausgegeben. Die Zeit wird soweit ich das verstanden habe, von einem K155id1 (russischer Schaltkreis) gegeben, ich kann die Zeitspanne also nicht so leicht einkürzen (vermutlich). Den Code werde ich nachher nochmal hochladen.