Buttons & Drehencoder ohne Funktion

Ich habe eine Lolin D32 pro Platine von @biologist.

Mit dem Drehencoder kann ich die Lautstärke verändern jedoch werden keine Klicks angenommen, weder zum aufwecken noch via long-press zum ausschalten.
Mit den Buttons 1,2 & 3 lässt sich der Espuino aufwecken jedoch kann ich während dem Playback keine Controls ausführen.

Ich habe bereits alle Lötpunkte und Verbindungen geprüft und gemessen.

Die einzigen Änderungen in settings.h sind
#define HAL 7
#define PORT_EXPANDER_ENABLE
// #define RFID_READER_TYPE_MFRC522_SPI
#define RFID_READER_TYPE_PN5180

Ich verwende den Arduino1 branch.

Das brauchst du aktiv eigentlich gar nicht setzen. Das geht automatisch, wenn du das passende ENV auswählst:

Ist das bei dir gesetzt?

Jetzt ja, habe es bisher immer in der settings.h gesetzt und dann in PlatformIO das Environment direkt gewählt.
Hat jetzt aber keine Änderung gebracht.

Das läuft direkt über GPIOs.

Der Button läuft über den Port-Expander (PE).

Ok, also d.h., dass der PE in dem Sinne funktioniert, dass er einen Interrupt wirft, wenn sich eingangsseitig was ändert. Dafür muss er, denke ich zumindest, auch nicht softwaremäßig initialisiert worden sein. Weil alle IOs, die er hat, standardmäßig auf Input stehen. Nur IOs, die auf Output stehen, können keine Interrupts auslösen. Insgesamt heißt das auch, dass der ESP32 am passenden GPIO auf Interrupts reagiert.

Wie ist das denn beim Starten? Also du müsstest da eine Meldung kriegen, ob der PE gefunden wurde (oder eben nicht):

Ansonsten hattest du per PN ja schon geschrieben, dass es ja mal funktioniert hat.

Ich sehe keine Logs zum Expander, also auch kein NOT FOUND

Maximale Inaktivitätszeit wurde aus NVS geladen: 10
Zyklus für Batteriemessung fuer Neopixel-Anzeige aus NVS geladen: 10 Minuten
Unterer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.00 V
Oberer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 4.20 V
Spannungslevel (Batterie) fuer Niedrig-Warnung via Neopixel aus NVS geladen: 3.40 V
Spannungslevel (Batterie) fuer Kritisch-Warnung via Neopixel aus NVS geladen: 3.10 V
Initiale Lautstärke wurde aus NVS geladen: 8
Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 21
Maximale Lautstärke für Kopfhörer wurde aus NVS geladen: 7
Lautsprecher eingeschaltet
Maximale Lautstärke wurde gesetzt auf: 21
Initiale LED-Helligkeit wurde aus NVS geladen: 50
LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2

  _____   ____    ____            _                 
 | ____| / ___|  |  _ \   _   _  (_)  _ __     ___  
 |  _|   \__  \  | |_) | | | | | | | | '_ \   / _ \
 | |___   ___) | |  __/  | |_| | | | | | | | | (_) |
 |_____| |____/  |_|      \__,_| |_| |_| |_|  \___/ 
 Rfid-controlled musicplayer

Software-revision: 20220601-1

ESP-IDF version: v3.3.5-1-g85c43024c
Wakeup was not caused by deep sleep: 0
Versuche SD-Karte wird im SD_MMC-Modus (1 Bit) zu mounten...
SD card type: SDHC
SD-Kartengröße / freier Speicherplatz: 14910 MB / 10973 MB

FTP-User wurde aus NVS geladen: espuino
FTP-Passwort wurde aus NVS geladen: espuino
MQTT-Flag (aktiviert) wurde aus NVS geladen: 1
MQTT-Server wurde aus NVS geladen: 172.22.4.1
MQTT-User wurde aus NVS geladen: espuino
MQTT-Passwort wurde aus NVS geladen: espuino
MQTT-Port wurde aus NVS geladen: 1883
Hostname aus NVS geladen: espuino
Firmware version=3.5
RFID-Tags koennen jetzt gescannt werden...
.....Aktuelle IP: 172.22.11.225
Synchronisiere Uhrzeit via NTP...
Freier Heap-Speicher nach Setup-Routine: 113276
PSRAM: 4194204 bytes
Flash-size: 16777216 bytes
RSSI: -72 dBm
Versuche Verbindung zu MQTT-Broker aufzubauen 172.22.4.1
Verbinde zu MQTT-Server mit User und Passwort
Neue Lautstärke empfangen via Queue: 8
MQTT-Session aufgebaut.
MQTT-Nachricht empfangen: [Topic: Cmnd/ESPuino/Sleep] [Command: ON]
MQTT-Nachricht empfangen: [Topic: Cmnd/ESPuino/LedBrightness] [Command: 100]
Aktuelle Batteriespannung: 4.08 V

Dann ist es entweder nicht mit einkompiliert oder oben abgeschnitten. Man sollte es aber über das Webinterface sehen.

Ansonsten kannst du das mal aktivieren:

Du kriegst dann zyklisch (oft!) die Bitmaske beider Eingänge angezeigt. Wenn du einen Button drückst, dann sollte die sich ändern.

Hast du auch den Taster selbst geprüft? Also Durchgangsprüfer an die Pins des Tasters und diesen Drücken.

In den Logs kann ich nichts zum Port Expander finden.

Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/MemX.cpp.o
Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/Mqtt.cpp.o
Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/Port.cpp.o
Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/Power.cpp.o
Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/Queues.cpp.o
Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/RfidCommon.cpp.o
Compiling .pio/build/lolin_d32_pro_sdmmc_pe/src/RfidMfrc522.cpp.o
src/Port.cpp: In function 'void Port_ExpanderHandler()':
src/Port.cpp:357:110: warning: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat=]
     Serial.printf("%u Debug: PE-Port: %u  Status: %u\n", millis(), i, Port_ExpanderPortsInputChannelStatus[i]);
                                                                                                              ^

Mit compliliert wird er aber scheinbar. Sonst gäbs keine Warnung

Writing at 0x00232957... (96 %)
Writing at 0x0023840b... (97 %)
Writing at 0x0023dd00... (98 %)
Writing at 0x00243787... (100 %)
Wrote 2318832 bytes (1398840 compressed) at 0x00010000 in 37.3 seconds (effective 497.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Please build project in debug configuration to get more details about an exception.
See https://docs.platformio.org/page/projectconf/build_configurations.html


--- Terminal on /dev/cu.usbserial-210 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
Maximale Inaktivitätszeit wurde aus NVS geladen: 10
Zyklus für Batteriemessung fuer Neopixel-Anzeige aus NVS geladen: 10 Minuten
Unterer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.00 V
Oberer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 4.20 V
Spannungslevel (Batterie) fuer Niedrig-Warnung via Neopixel aus NVS geladen: 3.40 V
Spannungslevel (Batterie) fuer Kritisch-Warnung via Neopixel aus NVS geladen: 3.10 V
Initiale Lautstärke wurde aus NVS geladen: 8
Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 18
Maximale Lautstärke für KopfDisconnected (read failed: [Errno 6] Device not configured)
Reconnecting to /dev/cu.usbserial-210 
Please build project in debug configuration to get more details about an exception.
See https://docs.platformio.org/page/projectconf/build_configurations.html


         Connected!
Maximale Inaktivitätszeit wurde aus NVS geladen: 10
Zyklus für Batteriemessung fuer Neopixel-Anzeige aus NVS geladen: 10 Minuten
Unterer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.00 V
Oberer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 4.20 V
Spannungslevel (Batterie) fuer Niedrig-Warnung via Neopixel aus NVS geladen: 3.40 V
Spannungslevel (Batterie) fuer Kritisch-Warnung via Neopixel aus NVS geladen: 3.10 V
Initiale Lautstärke wurde aus NVS geladen: 8
Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 18
Maximale Lautstärke für Kopfhörer wurde aus NVS geladen: 7
Lautsprecher eingeschaltet
Maximale Lautstärke wurde gesetzt auf: 18
Initiale LED-Helligkeit wurde aus NVS geladen: 50
LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2

  _____   ____    ____            _                 
 | ____| / ___|  |  _ \   _   _  (_)  _ __     ___  
 |  _|   \__  \  | |_) | | | | | | | | '_ \   / _ \
 | |___   ___) | |  __/  | |_| | | | | | | | | (_) |
 |_____| |____/  |_|      \__,_| |_| |_| |_|  \___/ 
 Rfid-controlled musicplayer

Software-revision: 20220601-1

ESP-IDF version: v3.3.5-1-g85c43024c
Wakeup was not caused by deep sleep: 0
Versuche SD-Karte wird im SD_MMC-Modus (1 Bit) zu mounten...
SD card type: SDHC
SD-Kartengröße / freier Speicherplatz: 14910 MB / 10973 MB

FTP-User wurde aus NVS geladen: espuino
FTP-Passwort wurde aus NVS geladen: espuino
MQTT-Flag (aktiviert) wurde aus NVS geladen: 1
MQTT-Server wurde aus NVS geladen: 172.22.4.1
MQTT-User wurde aus NVS geladen: espuino
MQTT-Passwort wurde aus NVS geladen: espuino
MQTT-Port wurde aus NVS geladen: 1883
Hostname aus NVS geladen: espuino
Firmware version=3.5
RFID-Tags koennen jetzt gescannt werden...
.....Aktuelle IP: 172.22.11.225
Synchronisiere Uhrzeit via NTP...
Freier Heap-Speicher nach Setup-Routine: 112992
PSRAM: 4194204 bytes
Flash-size: 16777216 bytes
RSSI: -72 dBm
Versuche Verbindung zu MQTT-Broker aufzubauen 172.22.4.1
Verbinde zu MQTT-Server mit User und Passwort
Neue Lautstärke empfangen via Queue: 8
MQTT-Session aufgebaut.
MQTT-Nachricht empfangen: [Topic: Cmnd/ESPuino/Sleep] [Command: ON]
MQTT-Nachricht empfangen: [Topic: Cmnd/ESPuino/LedBrightness] [Command: 100]
Aktuelle Batteriespannung: 3.88 V
ws[/ws][1] connect
ws[/ws][1] text-message[39]: trackinfo

Vielleicht führst du mal ein „Flash erase“ durch und flashst mal neu. Bei Arduino1 gibt’s das Problem, dass es vorkommen kann, dass die neu geflashte Firmware nicht gebootet wird und stattdessen weiterhin die alte. In Anbetracht der Tatsache, dass deine Software-Revision von 06/2022 ist, scheint mir das plausibel das Problem zu sein. Außer du hast den Code nicht neu ausgecheckt.
Wenn der Code frisch ausgecheckt ist, dann sollte da „20231104-1“ stehen.

Das scheint es gewesen zu sein. Bis auf den dekoderknopf gehen alle, da ist bestimmt noch ein Konfigurationsfehler. Das muss jetzt aber bis nach Weihnachten warten.

Vielen dank für den Support