Add ESP32 touch sensors as button alternative (#1190)
* Add touch option to button handler * Check if touch is pressed in setup * Add TOUCHPIN build env and override example Co-authored-by: Aircoookie <dev.aircoookie@gmail.com>
This commit is contained in:
parent
1313a44ba3
commit
a3e1af72ab
@ -334,6 +334,14 @@ lib_ignore =
|
|||||||
ESPAsyncTCP
|
ESPAsyncTCP
|
||||||
ESPAsyncUDP
|
ESPAsyncUDP
|
||||||
|
|
||||||
|
[env:custom32_TOUCHPIN_T0]
|
||||||
|
board = esp32dev
|
||||||
|
platform = espressif32@1.12.4
|
||||||
|
build_flags = ${common.build_flags_esp32} -D TOUCHPIN=T0
|
||||||
|
lib_ignore =
|
||||||
|
ESPAsyncTCP
|
||||||
|
ESPAsyncUDP
|
||||||
|
|
||||||
[env:wemos_shield_esp32]
|
[env:wemos_shield_esp32]
|
||||||
board = esp32dev
|
board = esp32dev
|
||||||
platform = espressif32@1.12.4
|
platform = espressif32@1.12.4
|
||||||
|
@ -21,6 +21,7 @@ build_flags = ${common.build_flags_esp8266}
|
|||||||
; PIN defines - uncomment and change, if needed:
|
; PIN defines - uncomment and change, if needed:
|
||||||
; -D LEDPIN=2
|
; -D LEDPIN=2
|
||||||
; -D BTNPIN=0
|
; -D BTNPIN=0
|
||||||
|
; -D TOUCHPIN=T0
|
||||||
; -D IR_PIN=4
|
; -D IR_PIN=4
|
||||||
; -D RLYPIN=12
|
; -D RLYPIN=12
|
||||||
; -D RLYMDE=1
|
; -D RLYMDE=1
|
||||||
|
@ -15,13 +15,24 @@ void shortPressAction()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isButtonPressed()
|
||||||
|
{
|
||||||
|
#ifdef BTNPIN
|
||||||
|
if (digitalRead(BTNPIN) == LOW) return true;
|
||||||
|
#endif
|
||||||
|
#ifdef TOUCHPIN
|
||||||
|
if (touchRead(TOUCHPIN) <= TOUCH_THRESHOLD) return true;
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void handleButton()
|
void handleButton()
|
||||||
{
|
{
|
||||||
#ifdef BTNPIN
|
#if defined(BTNPIN) || defined(TOUCHPIN)
|
||||||
if (!buttonEnabled) return;
|
if (!buttonEnabled) return;
|
||||||
|
|
||||||
if (digitalRead(BTNPIN) == LOW) //pressed
|
if (isButtonPressed()) //pressed
|
||||||
{
|
{
|
||||||
if (!buttonPressedBefore) buttonPressedTime = millis();
|
if (!buttonPressedBefore) buttonPressedTime = millis();
|
||||||
buttonPressedBefore = true;
|
buttonPressedBefore = true;
|
||||||
@ -37,7 +48,7 @@ void handleButton()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (digitalRead(BTNPIN) == HIGH && buttonPressedBefore) //released
|
else if (!isButtonPressed() && buttonPressedBefore) //released
|
||||||
{
|
{
|
||||||
long dur = millis() - buttonPressedTime;
|
long dur = millis() - buttonPressedTime;
|
||||||
if (dur < 50) {buttonPressedBefore = false; return;} //too short "press", debounce
|
if (dur < 50) {buttonPressedBefore = false; return;} //too short "press", debounce
|
||||||
|
@ -126,6 +126,8 @@
|
|||||||
|
|
||||||
#define ABL_MILLIAMPS_DEFAULT 850; // auto lower brightness to stay close to milliampere limit
|
#define ABL_MILLIAMPS_DEFAULT 850; // auto lower brightness to stay close to milliampere limit
|
||||||
|
|
||||||
|
#define TOUCH_THRESHOLD 32 // limit to recognize a touch, higher value means more sensitive
|
||||||
|
|
||||||
// Size of buffer for API JSON object (increase for more segments)
|
// Size of buffer for API JSON object (increase for more segments)
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
#define JSON_BUFFER_SIZE 9216
|
#define JSON_BUFFER_SIZE 9216
|
||||||
|
@ -21,6 +21,7 @@ void updateBlynk();
|
|||||||
|
|
||||||
//button.cpp
|
//button.cpp
|
||||||
void shortPressAction();
|
void shortPressAction();
|
||||||
|
bool isButtonPressed();
|
||||||
void handleButton();
|
void handleButton();
|
||||||
void handleIO();
|
void handleIO();
|
||||||
|
|
||||||
|
@ -250,8 +250,8 @@ void WLED::beginStrip()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// disable button if it is "pressed" unintentionally
|
// disable button if it is "pressed" unintentionally
|
||||||
#ifdef BTNPIN
|
#if defined(BTNPIN) || defined(TOUCHPIN)
|
||||||
if (digitalRead(BTNPIN) == LOW)
|
if (isButtonPressed())
|
||||||
buttonEnabled = false;
|
buttonEnabled = false;
|
||||||
#else
|
#else
|
||||||
buttonEnabled = false;
|
buttonEnabled = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user