đź“— Das dynamische Button-Layout

Ursprünglich war in der Firmware des ESPuino fest verankert, dass die Bedienung über drei Tasten und einem Drehencoder zu erfolgen hat. Die Bedienung/Bedeutung der jeweiligen Tasten war dabei vorgegeben. Dies hat sich nun geändert: Tasten können nun wahlweise hinzugefügt und entfernt werden. Auch ist der Drehencoder nun optional.

An dieser Stelle sei erwähnt, dass das von mir empfohlene (und benutzte) Layout weiterhin drei Taster und ein Drehencoder ist.

  • Als neue Direktive in settings.h ist USEROTARY_ENABLE hinzugekommen. Wird kein Drehencoder gebraucht, so kann dies deaktiviert werden. Hinweis: Ist dies der Fall, so muss in der jeweiligen Develboard-spezifischen Config unbedingt WAKEUP_BUTTON angepasst werden.

  • Mit dem eben bereits angesprochenen WAKEUP_BUTTON kann festgelegt werden, mit welcher Taste der ESPuino wieder aus dem Tiefschlaf geholt werden soll. Es ist an dieser Stelle darauf zu achten, dass nur sog. RTC-GPIOs (0, 4, 12, 13, 14, 15, 25, 26, 27, 32, 33, 34, 35, 36, 39) verwendbar sind. Es können an dieser Stelle direkt Zahlen reingeschrieben werden oder aber z.B. auch Namen wie DREHENCODER_BUTTON oder NEXT_BUTTON. Soll dieses Feature deaktiviert werden, so ist eine 99 zu setzen.

  • In der Develboard-spezifischen Config sind die Tasten BUTTON_4 und BUTTON_5 hinzugekommen. Per Voreinstellung sind sie deaktiviert (99). Im Gegenzug können jedoch auch NEXT_BUTTON, PREVIOUS_BUTTON oder PAUSEPLAY_BUTTON wahlweise aktiviert oder deaktiviert werden.

  • In settings.h können den Tastern nun beliebige Aktionen zugewiesen werden. Hierbei ist zu unterscheiden, ob es sich um eine Tastenkombination aus zwei Tasten (MULTI_n_SHORT) oder um eine einzige Taste (BUTTON_n_SHORT oder BUTTON_n_LONG) handelt. D.h. jeder einzelnen Taste kann man eine Aktion fĂĽr kurzen Tastendruck und eine fĂĽr langen Tastendruck zuweisen.

  • Möchte man einer Taste keine Aktion zuweisen, so ist die Direktive CMD_NOTHING zu setzen. Dies muss entsprechend fĂĽr einen kurzen und/oder langen Tastendruck gemacht werden.

  • Möchte man einer Taste eine Aktion zuweisen, so sind folgende Aktionen möglich (siehe values.h):

Kommando Beschreibung
CMD_LOCK_BUTTONS_MOD Sperrt alle Tasten und gibt sie [theoretisch] wieder frei. Macht als Tastenbelegung eher nicht so viel Sinn, da man mit gesperrten Tasten keine Tastenaktion mehr auslösen kann. Ist eher eine Aktion für Modifikationskarten.
CMD_SLEEP_TIMER_MOD_15 Schaltet sich nach 15 Minuten aus und LEDs werden gedimmt
CMD_SLEEP_TIMER_MOD_30 Schaltet sich nach 30 Minuten aus und LEDs werden gedimmt
CMD_SLEEP_TIMER_MOD_60 Schaltet sich nach 60 Minuten aus und LEDs werden gedimmt
CMD_SLEEP_TIMER_MOD_120 Schaltet sich nach 120 Minuten aus und LEDs werden gedimmt
CMD_SLEEP_AFTER_END_OF_TRACK Schaltet sich nach Ende des Titels aus und LEDs werden gedimmt
CMD_SLEEP_AFTER_END_OF_PLAYLIST Schaltet sich nach Ende der Playlist aus und LEDs werden gedimmt
CMD_SLEEP_AFTER_5_TRACKS Schaltet sich nach Ende von fĂĽnf Titeln aus und LEDs werden gedimmt
CMD_REPEAT_PLAYLIST Aktuelle Playlist wird endlos wiederholt
CMD_REPEAT_TRACK Aktueller Titel wird endlos wiederholt
CMD_DIMM_LEDS_NIGHTMODE Dimmt LEDs in Nachtmodus
CMD_TOGGLE_WIFI_STATUS Schaltet WLAN an/aus
CMD_TOGGLE_BLUETOOTH_SINK_MODE Schaltet den Bluetooth-Modus an/aus, bei dem man zu ESPuino streamen kann (z.B. von einem Handy).
CMD_TOGGLE_BLUETOOTH_SOURCE_MODE Schaltet den Bluetooth-Modus an/aus, bei dem man von ESPuino zu einem externen Lautsprecher oder einem Kopfhörer streamen kann.
CMD_ENABLE_FTP_SERVER Schaltet FTP-Server an (aus geht nicht)
CMD_PLAYPAUSE Wechsel zwischen Pause und Play
CMD_PREVTRACK Vorheriger Titel der aktuellen Playlist
CMD_NEXTTRACK Nächster Titel der aktuellen Playlist
CMD_FIRSTTRACK Sprung zu erstem Titel der aktuellen Playlist
CMD_LASTTTRACK Sprung zu letztem Titel der aktuellen Playlist
CMD_VOLUMEINIT Stellt aktuelle Lautstärke auf Lautstärke nach dem Start ein
CMD_VOLUMEUP Erhöht Lautstärke um eine Einheit
CMD_VOLUMEDOWN ReduziertLautstärke um eine Einheit
CMD_MEASUREBATTERY Startet Messung der Akkuspannung (wird ĂĽber Log, Neopixel und MQTT anschlieĂźend ausgegeben)
CMD_SLEEPMODE Schaltet ESPuino sofort aus
CMD_SEEK_FORWARDS Springt n Sekunden nach vorne im Titel (Dauer in settings.h konfigurierbar
CMD_SEEK_BACKWARDS Springt n Sekunden nach hinten im Titel (Dauer in settings.h konfigurierbar
  • Beispiel: Man möchte ein Layout, welches auf drei Tasten und einem Drehencoder basiert. Dabei möchte man gerne zum vorherigen Titel, zum nächsten Titel, zum ersten Titel und zum letzten Titel springen können. Man möchte auch Pause/Play setzen kann. Weiterhin mittels Drehencoder den ESPuino anschalten, ausschalten, die Lautstärke ändern und die Batteriespannung anzeigen. Dies könnte man wie folgt machen (nicht zugewiesene Aktionen sind ausgeblendet):

#define BUTTON_0_SHORT CMD_NEXTTRACK
#define BUTTON_1_SHORT CMD_PREVTRACK
#define BUTTON_2_SHORT CMD_PLAYPAUSE
#define BUTTON_3_SHORT CMD_MEASUREBATTERY

#define BUTTON_0_LONG CMD_LASTTRACK
#define BUTTON_1_LONG CMD_FIRSTTRACK
#define BUTTON_2_LONG CMD_PLAYPAUSE
#define BUTTON_3_LONG CMD_SLEEPMODE

Weiterhin möchte man mit der Tastenkombination aus NEXT und PREVIOUS das WLAN aus- und anschalten können. Zusätzlich mit der Tastenkombination PAUSE/PLAY und NEXT den FTP-Server aktivieren.

#define BUTTON_MULTI_01 TOGGLE_WIFI_STATUS
#define BUTTON_MULTI_02 ENABLE_FTP_SERVER

  • Die Zahlen 0 bis 5 ergeben sich aus einer festen Zuordnung heraus, die nicht änderbar ist. D.h. egal, ob du einen Drehencoder benutzt oder nicht, dessen Nummer wird immer 3 bleiben. Es gilt:

0: NEXT_BUTTON
1: PREVIOUS_BUTTON
2: PAUSEPLAY_BUTTON
3: DREHENCODER_BUTTON
4: BUTTON_4
5: BUTTON_5

  • Eine Multi-Button-Aktion ergibt sich somit immer auf Basis zweier solcher Nummern. FĂĽr NEXT+PREVIOUS also z.B. 01. Dabei ist darauf zu achten, dass die kleinere Zahl immer vorne zu stehen hat. D.h. während 01 gĂĽltig ist, wäre das bei 10 nicht der Fall.

  • Abgesehen von GPIOs (0 bis 39) können auch Channels des Port-Expanders PCA9555 verwendet werden, sofern dieser verwendet wird und aktiviert ist. Der Wertebereich ist 100 bis 115. Weitere Informationen dazu gibt es hier: đź“— Einsatz des Port-Expanders PCA9555.

2 „Gefällt mir“

Ganz vielen Dank an alle Beteiligten! Habe heute die neue Version gepullt, ist ohne Probleme kompiliert & hochgeladen und dank der Hervoragenden Anleitung war die Config schnell Angepasst. Ich bin begeistert und ziehe meinen Hut! Gut gemacht! DANKE!

Als grundsätzliche Idee: Man kann auch mit weniger Tasten auskommen und stattdessen Modifikationskarten verwenden: Neue Modifikationskartentypen.
Ob das jetzt im Detail praktikabel ist, muss jeder für sich entscheiden. Aber grundsätzlich klappen würde es.

eine Kleinigkeit hat sich hier geändert:
anstelle des früheren Bluetooth Modus, bei dem es „nur“ die Funktion gab den ESPuino als Bluetooth Speaker zu verwenden

CMD_TOGGLE_BLUETOOTH_MODE	Schaltet Bluetooth an/aus

gibt es eine Neuerung den ESPuino nun entweder als Bluetooth Speaker oder zur Kopplung mit Bluetooth Kopfhörern zu verwenden. Hierfür haben sich die Kommandos allerdings auch entsprechend geändert, welche man den Buttons zuweisen kann

#define CMD_TOGGLE_BLUETOOTH_SINK_MODE  140         // Toggles Normal/Bluetooth sink Mode 
#define CMD_TOGGLE_BLUETOOTH_SOURCE_MODE 141        // Toggles Normal/Bluetooth source Mode 
3 „Gefällt mir“