Zeigt her eure ESPuinos

Eine Frage: Diese Switchs haben out of the box aktiv einen high Pegel.
Hast du die Firmware angepasst oder die Lötbrücken auf den Switch gemacht, damit diese aktiv low reagieren?

Ich dachte ursprünglich auch daran die Lötbrücken zu setzen anstatt eine Firmwareanpassung zu machen. Doch mit der Lötbrücke funktioniert das dann zwar mit aktiv Low (äquivalent zu den Tastern) aber leider leuchten dann dauernd die LEDs am Switch. Die LEDs berücksichtigen leider nicht die Änderung des aktiven Pegels. Deshalb habe ich eine Konfigurationsmöflichkeit in die Firmware aufgenommen. Damit erspare ich mir die Lötbrücken und den nutzlosen zusätzlichen Stromverbrauch.

Die Änderung habe ich bereits via PR im dev-branch vorgeschlagen.
Diese kann aber auch schnell in den bestehenden Source übernommen werden.

Hier die Änderung in Button.ccp

Hier der zu tauschende Block (copy & paste):

		// Buttons can be mixed between GPIO and port-expander.
		// But at the same time only one of them can be for example NEXT_BUTTON
		#if defined(BUTTON_0_ENABLE) || defined(EXPANDER_0_ENABLE)
				gButtons[0].currentState = Port_Read(NEXT_BUTTON) ^ BUTTON_0_ACTIVE_STATE;
		#endif
		#if defined(BUTTON_1_ENABLE) || defined(EXPANDER_1_ENABLE)
				gButtons[1].currentState = Port_Read(PREVIOUS_BUTTON) ^ BUTTON_1_ACTIVE_STATE;
		#endif
		#if defined(BUTTON_2_ENABLE) || defined(EXPANDER_2_ENABLE)
				gButtons[2].currentState = Port_Read(PAUSEPLAY_BUTTON) ^ BUTTON_2_ACTIVE_STATE;
		#endif
		#if defined(BUTTON_3_ENABLE) || defined(EXPANDER_3_ENABLE)
				gButtons[3].currentState = Port_Read(ROTARYENCODER_BUTTON) ^ BUTTON_3_ACTIVE_STATE;
		#endif
		#if defined(BUTTON_4_ENABLE) || defined(EXPANDER_4_ENABLE)
				gButtons[4].currentState = Port_Read(BUTTON_4) ^ BUTTON_4_ACTIVE_STATE;
		#endif
		#if defined(BUTTON_5_ENABLE) || defined(EXPANDER_5_ENABLE)
				gButtons[5].currentState = Port_Read(BUTTON_5) ^ BUTTON_5_ACTIVE_STATE;
		#endif

		// Iterate over all buttons in struct-array

In den settings.h sind dann noch die neuen Definitionen einzufügen (copy & paste):

	// Buttons active state: Default 0 for active LOW, 1 for active HIGH e.g. for TTP223 Capacitive Touch Switch Button (FinnBox)
	#define BUTTON_0_ACTIVE_STATE 1
	#define BUTTON_1_ACTIVE_STATE 1
	#define BUTTON_2_ACTIVE_STATE 1
	#define BUTTON_3_ACTIVE_STATE 0    //  keep rotary switch active low 
	#define BUTTON_4_ACTIVE_STATE 1
	#define BUTTON_5_ACTIVE_STATE 1

Nach folgendem Zeilen einfügen:

	// Buttons (better leave unchanged if in doubts :-))
	constexpr uint8_t buttonDebounceInterval = 50;      // Interval in ms to software-debounce buttons
	constexpr uint16_t intervalToLongPress = 700;       // Interval in ms to distinguish between short and long press of buttons

	// Buttons active state: Default 0 for active LOW, 1 for active HIGH e.g. for TTP223 Capacitive Touch Switch Button (FinnBox)
	#define BUTTON_0_ACTIVE_STATE 1
    . . .

VG Niko

2 „Gefällt mir“