ūüďó 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_MODE Schaltet Bluetooth an/aus
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.