Vorab
Inzwischen lässt sich das dynamische Button-Layout auch komfortabel über das Webinterface konfigurieren. Wechsele hierzu in den Tab „Allgemein“ und klicke unterhalb von „Erweiterte Einstellungen“ auf „Ein-/Ausblenden“. Im Detail ist das Ganze hier beschrieben: 📗 Dokumentation Webinterface.
An dieser Stelle sei erwähnt, dass das von mir empfohlene (und benutzte) Layout drei Taster und ein Drehencoder ist.
Konfiguration via settings.h
-
Als Direktive in
settings.histUSEROTARY_ENABLEvorhanden. Wird kein Drehencoder gebraucht, so kann dies deaktiviert werden. -
Mit
WAKEUP_BUTTONkann 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 wieDREHENCODER_BUTTONoderNEXT_BUTTON. Soll dieses Feature deaktiviert werden, so ist eine 99 zu setzen. Nicht auskommentieren! Hinweis: Diese Option ist bei Complete bzw. mini4L mehr oder weniger bedeutungslos, da die Buttons am Port-Expander angebunden sind. Das führt dazu, dass der ESPuino mit allen Tastern aufgeweckt werden kann. -
In
settings.hkö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_SHORToderBUTTON_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_NOTHINGzu 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 (ausschalten geht nur ĂĽber Neustart) |
| CMD_TELL_IP_ADDRESS | Sagt die aktuelle IP-Adresse an (benötigt Internet-Zugang) |
| CMD_TELL_CURRENT_TIME | Sagt die aktuelle Uhrzeit an (benötigt Internet-Zugang) |
| 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 |
| CMD_RESTARTSYSTEM | FĂĽhrt einen Neustart durch |
| CMD_VIRTUAL_RFID_CARD_01 bis CMD_VIRTUAL_RFID_CARD_09 | Zuweisung einer virtuellen Karte, die man ĂĽber das Webinterface verknĂĽpfen muss |
- 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.