Frage zur Einstellung der Lautstärke mit Rotary Encoder

Hallo zusammen,

wie gesagt bin ich jetzt schon einige Zeit mit dem Tonuino beschäftigt und habe auch bereits so einige Tonuinos zusammengebaut. Dabei haben sich einige Fragen ergeben - unter anderem noch folgende:

Wenn ich in constants.hpp die Funktion #define ROTARY_ENCODER aktiviere, dann ist es bei meinem Tonuino (Classic) so, dass die Lautstärke sowohl über den Drehknopf des Rotary Encoders (KY-040) als auch über die Tasten “Vor” und “Zurück” gesteuert wird. Ich würde es jedoch lieber so haben, dass ich die Lautstärke nur über den Drehkopf einstelle und die Tasten “Vor” und “Zurück” die Lautstärke nicht verändern. Hintergrund ist, dass ich einige Tonuinos mit Touch-Tasten ausgestattet habe (TTP223). Da passiert es dann manchmal aus Versehen, dass die Lautstärke verändert wird, obwohl man vor oder zurück springen möchte.

Jetzt weiß ich natürlich nicht, ob dies so gewollt ist, oder ob es noch eine falsche Einstellung meinerseits ist. Daher wollte ich einmal nachfragen. Zurzeit aktiviere ich im Falle des #define ROTARY_ENCODER immer folgende Tastenbelegung: #define THREEBUTTONS. Soweit von Interesse: //#define ROTARY_ENCODER_LONGPRESS ist dabei nicht aktiviert. Ich hatte dieses Verhalten jedoch auch mit folgender Einstellung: #define FIVEBUTTONS. Ich meine mich zu erinnern, dass ich es jedoch auch schon damit versucht habe #define ROTARY_ENCODER_LONGPRESS zu aktivieren.

Veilleicht hat hier jemand eine Erklärung - vielleicht findet sich so ja dann sogar eine Lösung.

Viele Grüße

Turkulainen

Hast du schon versucht die 5 Button Konfiguration zu nutzen und dann für lauter und leiser keine Taster anzuschließen, sondern nur für vor und zurück?

2 „Gefällt mir“

Hallo Gute_Laune,

ich werde dies nochmal testen. Ich meine, dass ich das schon versucht hatte - mit dem gleichen Effekt. Aber bevor ich das falsch in Erinnerung habe, werde ich nochmal einen Versuchsaufbau machen…

Viele Grüße

Turkulainen

Hallo Gute_Laune,

habe gerade nochmal einen Versuchsaufbau gemacht (3 Tasten an A0-A2) und den Rotary Encoder an A3 und A4. Bei #define THREEBUTTONS wird, wie schon gesagt, auch bei den Tastan an A1 und A2 die Lautstärke mit gesteuert. Bei #define FIVEBUTTONS ist es nun so, dass mit dem Rotary Encoder nun auch “Vor” und Zurück” mit gesteuert wird - je nach dem, wie schnell ich drehe - sehr verwirrend. Daher ja die Frage, ob es eine falsche Einstellung in constants.hpp ist. Vielleicht findet sich ja noch jemand, der eine Idee hierzu hat.

Viele Grüße

Turkulainen

Du musst im Admin-Menü einstellen, dass die Tasten (Lautstärke/vor und zurück) nicht vertauscht werden sollten.
Und du musst natürlich THREEBUTTONS nehmen.

Hallo Boerge1,

auch hier vielen Dank für die Rückmeldung. Ich habe beides versucht (#define THREEBUTTONS und im Admin-Menü die Tasten nicht vertauscht). Dies ändert aus meiner Sicht nicht das Verhalten der Tasten “Vor” und “Zurück”, die ebend auch (weiterhin) die Lautstärke mit steuern. Also es ist genau genommen so: ein kurzer Druck ändert die Lautstärke und ein langer erst bspw. dann “vor”. Wenn ich übrigens im Admin-Menü die Tasten tausche, ist es einfach umgekehrt, und zwar auch wieder für sowohl Vor/Zurück und Lautstärke; dann halt kurzer Druck “vor”, aber langer Druck “lauter”.

Wie gesagt, vielleicht ist es so gewollt. Oder es ist ein Fehler meiner Konfiguration. Daher wollte ich mal nachfragen. Für mich wäre die Steuerung klarer, wenn die Lautstärke nur über den Rotary Enconder und Vor und Zurück nur über die Tasten gesteuert würde. (Aber natürlich kann ich auch damit leben, wie es jetzt ist…)

Viele Grüße

Turkulainen

Ist das nicht genau das, was du willst? Kurzer Druck macht vor und zurück. Und die Lautstärke wird mit mit dem Rotary Encoder verändert.

Oder willst du noch das Feature haben, das mit langem Druck 10 Tracks vor oder zurück gesprungen wird?
Dann musst du doch FIVEBUTTONS nehmen und du musst die Pins für die Tasten four und five ändern, dass sie nicht mit dem Pin für den Rotary Encoder kollidieren. Ich glaube, du kannst den gleichen Pin für beide (four und five) nehmen.

Oder noch eine andere Möglichkeit: du nimmst doch THREEBUTTONS und änderst die Datei commands.cpp Zeilen 33,34,36,37.

1 „Gefällt mir“

Hast Du gesehen, dass der Rotary Encoder in 2 Stufen aktiviert werden kann?

  1. #define ROTARY_ENCODER
  2. #define ROTARY_ENCODER_LONGPRESS

Wenn Du LONGPRESS nicht aktivierst und den TonUINO so einstellst,
dass er bei kurzem Tastendruck die Lautstärke ändert, solltest Du mit dem Rotary Encoder keinen Titelsprung mehr auslösen können.

Oh nein, ich glaube, das kam durch FIVEBUTTONS und dass dann der Rotary Encoder die Tasten ausgelöst hat, die ja auf dem selben Pin konfiguriert sind.

1 „Gefällt mir“

Hallo Boerge1 und NoBl,

ich werde voraussichtlich erst am nächsten Wochenende wieder dazu kommen mir die Sache nochmal genauer anzusehen. Vor allem die Idee werde ich mal versuchen.

Ich melde mich dann, wenn ich es geschafft habe (oder weitere Fragen habe).

Viele Grüße

Turkulainen

Habe jetzt einen Rotary Encoder in meinem Versuchsaufbau mit unterschiedlichen Konfigurationen getestet und analysiert:

  • THREEBUTTONS + ROTARY_ENCODER + ROTARY_ENCODER_LONGPRESS
    In dieser Variante lässt sich der TonUINO allein über den Drehgeber vollständig steuern. In der Praxis (bei mir) jedoch nicht wirklich befriedigend, da zumindest mein Drehgeber etwas „zickig“ ist und eine klare Unterscheidung zwischen Press (= 1 Raste) und LONGPRESS (mehr als 1 Raste) nicht zuverlässig funktioniert, ist dann auch die Steuerung des TonUINO nicht exakt reproduzierbar.
  • THREEBUTTONS + ROTARY_ENCODER
    Damit lässt sich eine zuverlässige Lautstärkeregelung über den Drehencoder erreichen. Da aber für den Titelsprung die Tasten angeschlossen werden müssen, ist hier dann wieder die Doppelfunktion (Lautstärke/Titelsprung) möglich.
  • FIVEBUTTONS + ROTARY_ENCODER
    Damit lässt sich leider keine zuverlässige Lautstärkeregelung erreichen, da es durch die gemeinsame Konfiguration des Encoders und der Tasten auf dieselben Pins zu Konflikten kommt und ein ungewollt Titelsprung / Lautstärke ausgeführt wird..(@Boerge1 Da hast Du natürlich vollkommen Recht gehabt).

Zu einem befriedigenden Ergebnis bin ich mit folgenden Maßnahmen gekommen:

  • Anschluss des Rotary Encoders an die Pins A3 und A4, wie in der constants.hpp angegeben.
  • Konfiguration FIVEBUTTONS + ROTARY_ENCODER, LONGPRESS nicht aktiviert
  • Anschluss von 2 Tasten an Pins A1 und A2, den Taster des Encoders als Pause-Taste an A0
  • Änderung der Tastenkonfiguration in der constants.hpp (Zeilen 470 - 473) zu „buttonUpPin = A1“, „buttonDownPin = A2“, buttonFourPin =A3 und buttonDownPin = A4"

So kann jetzt über den Drehgeber zuverlässig die Lautstärke geregelt werden, ohne dass ein Titelsprung provoziert werden konnte.
Die 2 angeschlossenen Tasten lösen zuverlässig einen Titelsprung aus, Lautstärkeänderungen konnte ich nicht provozieren.
Wie für die 5-Tastennvariante normal, ist auch die Einstellung für „Funktion der Lautstärketasten umdrehen“ wirkungslos.
Ins Admin-Menü kommt man ebenfalls problemlos mit dem gewohnten „3-Tasten-Griff“

@Boerge1 Mir erscheint die Änderung der Tastenkonfiguration in der constants.hpp für Laien (und mich) verständlicher und einfacher zu realisieren. Eventuell könnte man das sogar mit einer If-Anweisung in Abhängigkeit von ROTARY_ENCODER (fest?) in den Code einbauen. (Müsste dann auch weiter unten für den ESP32 gemacht werden.)

2 „Gefällt mir“