Schnelles Drücken

Moin!

Ich habe gerade einen Tonuino mit den empfohlenen Arcade-Buttons fertiggestellt. Mir ist aufgefallen, dass die Buttons auf schnelles Knopfdrücken nicht gut reagieren. Wenn ich z.B. ein Album wiedergebe, so kann ich nicht “mal eben” schnell zu Lied Nr. 20 springen. Ich muss drücken, kurz warten, bis das nächste Lied läuft, und wieder drücken usw… Ich kann also nicht schnell 19 mal drücken und habe das Lied.
Ist das normal?

Welche Firmware (und Version!) setzt du ein? Wieviele Buttons hast du verbaut?

Ich vermute mal DEV mit 3 Tasten? Durch die Doppelbelegung ist es da natürlich normal, weil “lang drücken” ja “nächster Titel” ist. Umgehen kannst du das entweder:

  1. indem du die Funktion der Buttons im Admin Menü tauschst - dann ist kurz drücken nächster/vorheriger Track und lang drücken lauter/leiser.
  2. indem du auf 5 Buttons umbaust - dann hast du separate Buttons für die jeweilige Funktion.

Ich habe die DEV mit 3 Tasten. Firmware ist die aktuellste.

  1. Die Buttons sind bereits vertauscht. Ich kann nicht “schnell oft kurz drücken”. :grimacing:

  2. Ich mag die 3 Button Variante. :grinning:

Meine Frage ist daher eher, ob das normal ist?

Ich frage mich halt ob die Buttons schlecht sind, oder etwas an den Kontakten nicht stimmen könnte oder oder oder.

Könnt Ihr z.B. in einer Sekunde 3 Tracks vorspringen?

Das liegt an den 1000ms Delays jeweils am Ende der entsprechenden Funktionen:

Warum die da sind, keine Ahnung, aber du kannst versuchen diese zu verkleinern und sehen ob a) alles noch funktioniert und ob sich dann b) dein gewünschtes Verhalten einstellt.

Vielen Dank!

Das ist genau das, was ich vermutet habe. Ich bin eine ziemlicher Noob, was code angeht. Aber ich werde dennoch versuchen, mich dort mal auszutoben.

Kennt jemand den Grund für die Delays?

Vermutlich damit du überhaupt die Chance hast einzelne Tracks weiter zu springen (sprich dir die Chance zu geben die Taste auch wieder loszulassen). Wenn dieses Delay zu klein gewählt wird, springt man bei einem Druck vermutlich X Titel weiter.

Ooooder… Er würde sofort Lauter werden. Wenn ich also das Delay zu klein wähle, wird’s sofort Lauter. Ich muss also vorsichtig sein :laughing:

Was hat das mit lauter/leiser zu tun? Das sind doch ganz andere Funktionen… bei lauter/leiser ist “gedrückt halten” quasi gewollt. Finde ich auch problematisch für kleine Kinder, aber deswegen wurde das ja umbelegt (halten nächster titel, kurz lauter).

Wie gesagt, vom Code verstehe ich wenig. Aber Woran merkt die Software den Unterschied zwischen Drücken und gedrückt halten. Ich will sagen: Wenn kein Delay vorhanden wäre, so würden wohl alle titel extrem schnell durchgeskipt werden, aber wann wird die Box lauter?
Ich gehe hier nur vom Fall der nicht vertauschten Buttonbelegung aus.

Das sind verschiedene Checks die an unterschiedlichen Stellen passieren. Von daher, wenn dir das aktuelle Verhalten nicht zusagt, ändere es und schaue was passiert.

1 „Gefällt mir“

Habe die Delays gestern mal von 1000 auf 300ms abgeändert. Es funktioniert. Ich kann nun schnell durch die Lieder Skippen.

2 „Gefällt mir“

Meinen Sohn hat es immens gestört, dass er nicht mal eben ein paar Tracks/Lieder weiterspringen kann. Vom ersten zum zehnten Lied springen dauert realistisch um die 15-20 Sekunden, weil alleine zehn Sekunden für die Delays drauf gehen und man natürlich auch nie den perfekt frühestmöglichen Moment erwischt. Ein kurzer Delay ist wahrscheinlich sinnvoll um Wackler beim Drücken zu vermeiden, aber es muss ja nicht gleich eine ganze Sekunde sein. Ich bin froh, dass die Ursache einfach nur ein Parameter ist und habe das mal auf 100ms geändert. Jetzt passt es!

Vielleicht wäre es eine Überlegung wert, den Delay-Wert im Hauptprojekt deutlich herunterzusetzen? Jedes Kind bedient den Tonuino natürlich unterschiedlich, aber ich könnte mir vorstellen, dass es doch viele Kinder gibt, die von den „trägen“ Buttons nicht so angetan sind.

1 „Gefällt mir“

Es gibt auch die Möglichkeit den Button so abzufragen das er erst reagiert wenn man loslässt .also Abfrage ob gedrückt wurde und dann aber erst Befehl ausführen wenn Button losgelassen wird…

Die wird ja auch genutzt

Habe das selbe Problem.

An welchen Stellen im Code kann man das Delay verändern?
Muss ich das vor dem Kompilieren machen?

Danke und Gruß

In diesem Beitrag hat stephan die Zeilen doch gezeigt.
Da ist das delay, was du verkürzen kannst

Ich meine, es müsste jeweils am Ende von void previousButton und void nextButton ein Delay geben.
Da musst du es ändern.

Ja, das ist keine Einstellung im Adminmenü, sondern das muss im Code geändert werden.

1 „Gefällt mir“

Ich hole das Thema hier mal wieder hoch nach 2,5 Jahren. Es scheint sich da nämlich einiges geändert zu haben.

Kann mir jemand weiterhelfen, wo ich im aktuellen Code des Delay für das Vor- und Zurückskippen verringern kann?