Multibutton mit Drehencoder

Sagt mal hat schon jemand versucht ein Multibuttonlösung mit dem Drehencoder umzusetzen?

Durch die Tests mit den problematischen MP3-Dateien ist mir aufgefallen, dass das Spulen zu einer bestimmten Stelle im Lied auch nervig sein kann (ich weiß, dass macht man eigentlich nicht so oft).

Die Überlegung ist, ob das Spulen nicht einfacher über den Drehencoder geht.
Szenario: Taste XY drücken und gedrückt halten und über den Drehencoder zur gewünschten Stelle drehen (da würde dann auch Vor- und Zurückspulen gehen)

Damit könnte man auch andere Dinge machen z.B. das Dimmen der LEDs (ohne Nachtmoduskarte)

Die Codeänderung ist vermutlich nicht unerheblich, da der Drehencoder recht autark (bezogen auf die anderen Tasten) läuft

Meine Frage ist, hat jemand sowas schon mal versucht bzw. umgesetzt? Ich bin mir auch noch nicht sicher ob das ein Goldkantenfeature ist, was keiner nutzt.

Also was ich mal versucht hatte, ist DT und CLK auf den Port-Expander zu legen. Aber das wurde nicht schnell genug ausgelesen, so dass das nicht geklappt hat. Ich bin daher inzwischen wieder davon abgekommen, es über den PE machen zu wollen. Zumal die GPIOs, die für den Drehencoder in meinem Design genutzt werden, ja eh eigentlich nur GPIs sind und damit auch für „höherwertige“ Dinge nicht nutzbar sind.

Das beantwortet deine eigentliche Frage nicht, aber ich erwähne das nur als Hintergrundwissen, falls sich jmd. der Sache annehmen möchte.

Sowas wie das Dimmen der LED würde auf jeden Fall funktionieren damit, das sehe ich bei MQTT. Beim Spulen würde ich vermuten, dass man da recht schnell in irgendwelche Probleme läuft, wenn man diese Funktion innerhalb kürzester Zeit oft aufruft. Aber ist wie gesagt nur eine Vermutung.

Grundsätzlich würde ich es auf jeden Fall begrüßen, wenn man den Drehencoder universeller nutzen könnte. Wir müssen da auch nicht notwendigerweise bei der aktuellen Lib bleiben. Vor einer ganzen Weile wurde mal eine grandios einfach gebaute Lib mit State Machine-Implementierung verlinkt, die ich sehr interessant fand: Olimex ESP32-ADF und ESP-IDF / ESP-ADF - #20 von fizze.

Lustig, genau die selbe Idee, Taste drücken und dabei den Drehencoder zum Spulen verwenden, hatte ich neulich auch. Wäre eine tolle Funktion.

Edit:

Beim Spulen würde ich vermuten, dass man da recht schnell in irgendwelche Probleme läuft, wenn man diese Funktion innerhalb kürzester Zeit oft aufruft. Aber ist wie gesagt nur eine Vermutung.

Das könnte man ja einfach lösen, indem erst gespult wird wenn man die Taste los lässt. Beim Drehen des Encoders ändert sich dann nur die Led-Anzeige entsprechend der Spul-Position.

So hatte ich das auch gedacht.
Möglich wäre auch, wenn man x Sekunden nicht mehr gedreht hat, dann wird zu der Stelle gesprungen. Dies hätte den Vorteil, wenn man eine bestimmte Stelle sucht, dass man bei einem Nachjustieren nicht wieder die Zeit warten muss, bis der Longpress interpretiert wird.

  • Man müsste sich nur noch überlegen, ob jedes Inkrement des Drehencoders um Zeit x springt oder oder y Umdrehungen für das Durchspulen eines Titels angenommen werden und die Zeitsprünge pro Inkrement sich aus der Titellänge berechnen. (Thema: 2Minuten Song vs 70Minuten Hörspiel)
  • Außerdem muss man den Nutzer noch abholen, dass er jetzt Drehen kann - zB die letzte LED des Fortschritt blinkt jetzt rot/grün (im Wechsel) oder sowas

Leider bin ich nicht fit genug um das Vernünftig umzusetzen - das wäre dann maximal quick&dirty bloß ohne quick :slight_smile:
Momentan wird der Drehencoder auch direkt auf die Lautstärke gemapt - das müsste man auch noch Multibutton fähig umgestalten

2 „Gefällt mir“