47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
/*
|
|
|
|
This is an example how to use Touch Intrrerupts
|
|
The sketh will tell when it is touched and then relesased as like a push-button
|
|
|
|
This method based on touchInterruptSetThresholdDirection() is only available for ESP32
|
|
*/
|
|
|
|
#include "Arduino.h"
|
|
|
|
int threshold = 40;
|
|
bool touchActive = false;
|
|
bool lastTouchActive = false;
|
|
bool testingLower = true;
|
|
|
|
void gotTouchEvent(){
|
|
if (lastTouchActive != testingLower) {
|
|
touchActive = !touchActive;
|
|
testingLower = !testingLower;
|
|
// Touch ISR will be inverted: Lower <--> Higher than the Threshold after ISR event is noticed
|
|
touchInterruptSetThresholdDirection(testingLower);
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
delay(1000); // give me time to bring up serial monitor
|
|
Serial.println("ESP32 Touch Interrupt Test");
|
|
touchAttachInterrupt(T2, gotTouchEvent, threshold);
|
|
|
|
// Touch ISR will be activated when touchRead is lower than the Threshold
|
|
touchInterruptSetThresholdDirection(testingLower);
|
|
}
|
|
|
|
void loop(){
|
|
if(lastTouchActive != touchActive){
|
|
lastTouchActive = touchActive;
|
|
if (touchActive) {
|
|
Serial.println(" ---- Touch was Pressed");
|
|
} else {
|
|
Serial.println(" ---- Touch was Released");
|
|
}
|
|
}
|
|
Serial.printf("T2 pin2 = %d \n", touchRead(T2));
|
|
delay(125);
|
|
}
|