ESPWortuhr / Multilayout-ESP-Wordclock

Software for an ESP8266 based word clock with support of different layouts and languages
86 stars 46 forks source link

Animation nur alle 5 Minuten #163

Closed MOE-JOE2 closed 6 months ago

MOE-JOE2 commented 2 years ago

Hallo zusammen,

ich würde gerne den Code so anpassen, dass dieser nur alle 5 Minuten eine Animation abspielt. Ich kann C Code etwas lesen, soweit ich das verstehe findet die Animation in der Klasse "uhr_func.hpp" in der Funktion "static void led_set(bool changed = false)"statt. Bin ich hier an der richtign Stelle & lässt sich hier der Code hier einfach abändern, falls ja wie? oder müsste ich hier meine eigene Logik programmieren, sodass ich erkenne ob es sich immer um volle 5 Minuten handelt?

Grüße Moe-Joe

dbambus commented 2 years ago

Hey @MOE-JOE2,

an der Stelle die du gefunden hast wird letztlich abgefragt, ob sich das Layout geändert hat. Im Falle von Farbänderungen bleibt es false. Kommen allerdings Änderungen beim Layout von, bspw. bei Minuten, dann löst es das Routine in der Animation.hpp aus.

    if (animation->led_show_notify(changed, _minute)) {
        led_show();
    }

Man kann hier zwei Sachen machen um das gewünschte Verhalten, was ich durchaus sinnvoll als Default sehe, zu erlangen.

  1. Man ändert die aimType in der 'void show_minuten(uint8_t min) in welcher min != 0 ist aufKEINE` , sonst das was eingestellt ist.

oder

  1. Man ändert die Routine in in Animation.hpp und erweitert die changed Variable, um einen weiteren Wert, bspw. (none, changed_min, changed), mit der entsprechenden Logik in der Animation.hpp. Diese Variante erscheint mir derzeit am Sinnvollsten. Aber ich würde darüber noch nachdenken wollen.
AudiQ7 commented 8 months ago

Könnte ich das Thema nochmal auffrischen.

Gibt es dafür inzwischen eine gute Lösung? Finde es einfach schöner wenn die Animation alle 5 Minuten an geht.

dbambus commented 8 months ago

Hallo @AudiQ7

ich bin bisher noch nicht dazu gekommen das zu implementieren. aber die oben genannte Möglichkeit scheint noch Imme sinnvoll zu sein.

Mal sehen wann ich dazu komme.

Offtopic, ich hab gesehen, dass dein anderes Problem "closed" wurde, hat es sich gelöst ?

Mit freundlichen Grüßen David

AudiQ7 commented 8 months ago

Hi, danke für deine Antwort. Ich habe heute mehrere Stunden versucht die Routine in der Animation.hpp zu ändern. Aber irgendwie hat das nie funktioniert. Es war dann so dass die Rotuine nur alle 5 Minuten ausgelöst wurde und auf der Uhr war keine Anzeige.

Wüsstest du auf die Schnelle wo man den Code richtig ändert?

Ja das andere Problem habe ich gelöst in dem ich die LEDs umgelötet habe. Habe gesehen dass im Code die LEDs immer an der letzten Stelle sind.

Gruß Tom

dbambus commented 8 months ago

Hey,

naja es wäre noch möglich gewesen, die LED Matrix Datei in /Uhrtype komplett umzuschreiben, aber ich denke so ist es auch eine Lösung.

Zwecks des eigentlichen Problems, hier schaue ich gleich mal nach, wo man die Änderungen unterbringen müsste.

Mit freundlichen Grüßen David

dbambus commented 8 months ago

Hey @AudiQ7,

also man muss wohl Änderungen an anderer Stelle im Code vornehmen. Nämlich an:

// changed: 0 changes, e.g. color, no change of content
// changed: 1 content has changed
bool Animation::ledShowNotify(bool changed, uint8_t minute) {

in Animation.h.

Ich schau mir das morgen an, da ich den Animation code noch nicht in Gänze verstehe. Das hat @ATho95 damals geschrieben. Nach ein paar kleineren Tests bin ich mir jedoch sicher, das an dieser Stelle entsprechende Änderungen durchgeführt werden müssten.

Mit freundlichen Grüßen David

dbambus commented 8 months ago

Fixed in https://github.com/ESPWortuhr/Multilayout-ESP-Wordclock/pull/346

AudiQ7 commented 8 months ago

Super das sieht schonmal gut aus. War dann doch mehr Änderung im Code als gedacht.

Leider funktioniert das nicht auf dem Uhrtype "10x11 Uhr" und wenn der Modus "Wortuhr horizontal spiegeln" aktiviert ist. Weißt du woran das liegt?

dbambus commented 8 months ago

hallo @AudiQ7,

Wenn ich deine Einstellungen ausprobiere, dann funktioniert es auf meiner Uhr. Also nur 10x11 und horizontal gespielt. Als Effekt hab ich bei mir Laser.

Das Überblenden funktioniert anscheinend noch nicht, dass ist ein anderes Issue wert.

Mit freundlichen Grüßen David

dbambus commented 8 months ago

Ich habe nochmal einen Pull Request https://github.com/ESPWortuhr/Multilayout-ESP-Wordclock/pull/349 erstellt um das Problem besser zu lösen als davor.

dbambus commented 8 months ago

@AudiQ7

Könntest du testen, ob die neuen Änderungen bei dir funktionieren ?

AudiQ7 commented 8 months ago

@dbambus Ich habe es nun soweit getestet. Was mir jetzt nur aufgefallen ist, dass die Funktion bei Übergänge "Zufällig" nicht funktioniert. Es funktioniert nur ein Modus sozusagen.

Ansonsten ist die Änderung super.

dbambus commented 6 months ago

Hallo @AudiQ7,

Ich habe noch einen kleinen Fehler im Code gefunden und nun auch behoben. Jetzt sollten die Zufälligen Übergänge wieder funktionieren. Wie schon erwähnt nur alle 5 Minuten.

https://github.com/ESPWortuhr/Multilayout-ESP-Wordclock/pull/376

Mit freundlichen Grüßen David