first commit

This commit is contained in:
jaksatomovic 2024-03-06 12:40:28 +01:00
commit 868b14f8c8
286 changed files with 59925 additions and 0 deletions

View file

@ -0,0 +1,35 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN 2
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nButton Loop Demo");
button.begin(BUTTON_PIN);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
Serial.println(button.clickToString(button.wait()));
Serial.println(button.getNumberOfClicks());
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,39 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
byte myButtonStateHandler() {
return digitalRead(39);
}
/////////////////////////////////////////////////////////////////
void myTapHandler(Button2 &b) {
Serial.println("tap");
}
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(100);
Serial.println("\n\nCustom Buttom Test");
button.begin(VIRTUAL_PIN);
pinMode(39, INPUT_PULLUP);
button.setButtonStateFunction(myButtonStateHandler);
button.setTapHandler(myTapHandler);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,50 @@
/////////////////////////////////////////////////////////////////
#if !defined(ESP32)
#error This sketch needs an ESP32
#else
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
Button2 button;
byte pin = 4;
/////////////////////////////////////////////////////////////////
byte capStateHandler() {
int capa = touchRead(pin);
return capa < button.getDebounceTime() ? LOW : HIGH;
}
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nCapacitive Touch Demo");
button.setDebounceTime(35);
button.setButtonStateFunction(capStateHandler);
button.setClickHandler(click);
button.begin(VIRTUAL_PIN);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
}
/////////////////////////////////////////////////////////////////
void click(Button2& btn) {
Serial.println("click\n");
}
/////////////////////////////////////////////////////////////////
#endif
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,66 @@
/////////////////////////////////////////////////////////////////
// see https://github.com/LennartHennigs/Button2/pull/57
/////////////////////////////////////////////////////////////////
#if !defined(ESP32)
#error This sketch needs an ESP32 S2 or S3
#else
/////////////////////////////////////////////////////////////////
#include "Button2.h"
#define TOUCH_PIN T5 // Must declare the touch assignment, not the pin.
int threshold = 1500; // ESP32S2
bool touchdetected = false;
byte buttonState = HIGH;// HIGH is for unpressed, pressed = LOW
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
void gotTouch() {
touchdetected = true;
}
byte capStateHandler() {
return buttonState;
}
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(115200);
delay(50);
Serial.println("\n\nCapacitive Touch Demo");
touchAttachInterrupt(TOUCH_PIN, gotTouch, threshold);
button.setDebounceTime(35);
button.setButtonStateFunction(capStateHandler);
button.setClickHandler(click);
button.begin(BTN_VIRTUAL_PIN);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
if (touchdetected) {
touchdetected = false;
if (touchInterruptGetLastStatus(TOUCH_PIN)) {
buttonState = LOW;
} else {
buttonState = HIGH;
}
}
}
/////////////////////////////////////////////////////////////////
void click(Button2& btn) {
Serial.println("click\n");
}
/////////////////////////////////////////////////////////////////
#endif
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,51 @@
/////////////////////////////////////////////////////////////////
#if !defined(ESP32)
#error This sketch needs an ESP32
#else
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN 39
/////////////////////////////////////////////////////////////////
Button2 btn;
hw_timer_t *timer = NULL;
/////////////////////////////////////////////////////////////////
void IRAM_ATTR onTimer() {
btn.loop();
}
/////////////////////////////////////////////////////////////////
void click(Button2 &b) {
Serial.println("click");
}
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
btn.begin(BUTTON_PIN);
btn.setTapHandler(click);
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 10000, true); // every 0.1 seconds
timerAlarmEnable(timer);
}
/////////////////////////////////////////////////////////////////
void loop() {
}
/////////////////////////////////////////////////////////////////
#endif
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,76 @@
/////////////////////////////////////////////////////////////////
#if !defined(ESP32)
#error This sketch needs an ESP32 Classic
#else
/////////////////////////////////////////////////////////////////
#include "Button2.h"
#define TOUCH_PIN T0 // Must declare the touch assignment, not the pin. For example, T0 is GPIO4 and T3 is GPIO 15.
// You can look up the touch assignment in the datasheet: https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf
int threshold = 40; // ESP32
bool touchActive = false;
bool lastTouchActive = false;
bool testingLower = true;
byte buttonState = HIGH;// HIGH is for unpressed, pressed = LOW
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
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);
}
}
byte capStateHandler() {
return buttonState;
}
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(115200);
delay(50);
Serial.println("\n\nCapacitive Touch Demo");
touchAttachInterrupt(TOUCH_PIN, gotTouchEvent, threshold);
// Touch ISR will be activated when touchRead is lower than the Threshold
touchInterruptSetThresholdDirection(testingLower);
button.setDebounceTime(35);
button.setButtonStateFunction(capStateHandler);
button.setClickHandler(click);
button.begin(VIRTUAL_PIN);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
if(lastTouchActive != touchActive){
lastTouchActive = touchActive;
if (touchActive) {
buttonState = LOW;
} else {
buttonState = HIGH;
}
}
}
/////////////////////////////////////////////////////////////////
void click(Button2& btn) {
Serial.println("click\n");
}
/////////////////////////////////////////////////////////////////
#endif
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,62 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN 2
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
while (!Serial) {
delay(20);
}
Serial.println("\n\nLongpress Handler Demo");
button.begin(BUTTON_PIN);
// button.setLongClickDetectedRetriggerable(true);
button.setLongClickHandler(longClick);
button.setLongClickDetectedHandler(longClickDetected);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
}
/////////////////////////////////////////////////////////////////
void longClick(Button2& btn) {
unsigned int time = btn.wasPressedFor();
Serial.print("You clicked ");
if (time > 1500) {
Serial.print("a really really long time.");
} else if (time > 1000) {
Serial.print("a really long time.");
} else if (time > 500) {
Serial.print("a long time.");
} else {
Serial.print("long.");
}
Serial.print(" (");
Serial.print(time);
Serial.println(" ms)");
}
/////////////////////////////////////////////////////////////////
void longClickDetected(Button2& btn) {
Serial.print("long click #");
Serial.print(btn.getLongClickCount());
Serial.println(" detected");
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,98 @@
#include "M5Core2.h"
#include "Button2.h"
/////////////////////////////////////////////////////////////////
Button2 button;
bool cleared = false;
/////////////////////////////////////////////////////////////////
byte myButtonStateHandler() {
return !(M5.BtnA.isPressed());
}
/////////////////////////////////////////////////////////////////
void setup() {
M5.begin();
button.setDoubleClickTime(300);
// button.setChangedHandler(changed);
// button.setPressedHandler(pressed);
button.setReleasedHandler(released);
// button.setTapHandler(tap);
button.setClickHandler(click);
button.setLongClickDetectedHandler(longClickDetected);
// button.setLongClickHandler(longClick);
button.setDoubleClickHandler(doubleClick);
button.setTripleClickHandler(tripleClick);
button.setButtonStateFunction(myButtonStateHandler);
button.begin(VIRTUAL_PIN);
M5.Lcd.clear();
M5.Lcd.setTextSize(2);
M5.Lcd.setTextWrap(true, true);
M5.Lcd.print("Button A Test");
M5.Lcd.print("\n");
M5.Lcd.print("\n");
}
void loop() {
button.loop();
// clear screen if wrap happened
if (M5.Lcd.getCursorY() <= 16) {
if (!cleared) {
M5.Lcd.clear();
Serial.println("now");
cleared = true;
}
} else {
cleared = false;
}
M5.update();
}
/////////////////////////////////////////////////////////////////
void pressed(Button2& btn) {
M5.Lcd.print("pressed");
M5.Lcd.print("\n");
}
void released(Button2& btn) {
M5.Lcd.print("released: ");
M5.Lcd.print(btn.wasPressedFor());
M5.Lcd.print("\n");
}
void changed(Button2& btn) {
M5.Lcd.print("changed");
M5.Lcd.print("\n");
}
void click(Button2& btn) {
M5.Lcd.print("click");
M5.Lcd.print("\n");
}
void longClickDetected(Button2& btn) {
M5.Lcd.print("long click detected");
M5.Lcd.print("\n");
}
void longClick(Button2& btn) {
M5.Lcd.print("long click");
M5.Lcd.print("\n");
}
void doubleClick(Button2& btn) {
M5.Lcd.print("double click");
M5.Lcd.print("\n");
}
void tripleClick(Button2& btn) {
M5.Lcd.print("triple click\n");
M5.Lcd.print("\n");
}
void tap(Button2& btn) {
M5.Lcd.print("tap");
M5.Lcd.print("\n");
}

View file

@ -0,0 +1,55 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN 2
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nMulti Handler Demo");
button.begin(BUTTON_PIN);
button.setClickHandler(handler);
// button.setLongClickHandler(handler); // this will only be called upon release
button.setLongClickDetectedHandler(handler); // this will only be called upon detection
button.setDoubleClickHandler(handler);
button.setTripleClickHandler(handler);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
}
/////////////////////////////////////////////////////////////////
void handler(Button2& btn) {
switch (btn.getType()) {
case single_click:
break;
case double_click:
Serial.print("double ");
break;
case triple_click:
Serial.print("triple ");
break;
case long_click:
Serial.print("long");
break;
}
Serial.print("click");
Serial.print(" (");
Serial.print(btn.getNumberOfClicks());
Serial.println(")");
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,53 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN_1 3
#define BUTTON_PIN_2 4
/////////////////////////////////////////////////////////////////
Button2 button_1, button_2;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nMulti Handler Demo w/ 2 buttons");
button_1.begin(BUTTON_PIN_1);
button_1.setClickHandler(handler);
button_1.setDoubleClickHandler(handler);
button_2.begin(BUTTON_PIN_2);
button_2.setClickHandler(handler);
button_2.setDoubleClickHandler(handler);
}
/////////////////////////////////////////////////////////////////
void loop() {
button_1.loop();
button_2.loop();
}
/////////////////////////////////////////////////////////////////
void handler(Button2& btn) {
switch (btn.getType()) {
case single_click:
break;
case double_click:
Serial.print("double ");
break;
}
Serial.print("click ");
Serial.print("on button #");
Serial.print((btn == button_1) ? "1" : "2");
Serial.println();
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,45 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_A_PIN 2
#define BUTTON_B_PIN 0
/////////////////////////////////////////////////////////////////
Button2 buttonA, buttonB;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nMultiple Buttons Demo");
buttonA.begin(BUTTON_A_PIN);
buttonA.setClickHandler(click);
buttonB.begin(BUTTON_B_PIN);
buttonB.setClickHandler(click);
}
/////////////////////////////////////////////////////////////////
void loop() {
buttonA.loop();
buttonB.loop();
}
/////////////////////////////////////////////////////////////////
void click(Button2& btn) {
if (btn == buttonA) {
Serial.println("A clicked");
} else if (btn == buttonB) {
Serial.println("B clicked");
}
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,80 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN 37
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nButton Demo");
button.begin(BUTTON_PIN);
// button.setLongClickTime(1000);
// button.setDoubleClickTime(400);
Serial.println(" Longpress Time:\t" + String(button.getLongClickTime()) + "ms");
Serial.println(" DoubleClick Time:\t" + String(button.getDoubleClickTime()) + "ms");
Serial.println();
// button.setChangedHandler(changed);
// button.setPressedHandler(pressed);
button.setReleasedHandler(released);
// button.setTapHandler(tap);
button.setClickHandler(click);
button.setLongClickDetectedHandler(longClickDetected);
button.setLongClickHandler(longClick);
button.setLongClickDetectedRetriggerable(false);
button.setDoubleClickHandler(doubleClick);
button.setTripleClickHandler(tripleClick);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
}
/////////////////////////////////////////////////////////////////
void pressed(Button2& btn) {
Serial.println("pressed");
}
void released(Button2& btn) {
Serial.print("released: ");
Serial.println(btn.wasPressedFor());
}
void changed(Button2& btn) {
Serial.println("changed");
}
void click(Button2& btn) {
Serial.println("click\n");
}
void longClickDetected(Button2& btn) {
Serial.println("long click detected");
}
void longClick(Button2& btn) {
Serial.println("long click\n");
}
void doubleClick(Button2& btn) {
Serial.println("double click\n");
}
void tripleClick(Button2& btn) {
Serial.println("triple click\n");
Serial.println(btn.getNumberOfClicks());
}
void tap(Button2& btn) {
Serial.println("tap");
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,51 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN 2
/////////////////////////////////////////////////////////////////
Button2 button;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nButton Demo");
button.begin(BUTTON_PIN);
button.setChangedHandler(changed);
//button.setPressedHandler(pressed);
//button.setReleasedHandler(released);
// setTapHandler() is called by any type of click, longpress or shortpress
button.setTapHandler(tap);
}
/////////////////////////////////////////////////////////////////
void loop() {
button.loop();
}
/////////////////////////////////////////////////////////////////
void pressed(Button2& btn) {
Serial.println("pressed");
}
void released(Button2& btn) {
Serial.print("released: ");
Serial.println(btn.wasPressedFor());
}
void changed(Button2& btn) {
Serial.println("changed");
}
void tap(Button2& btn) {
Serial.println("tap");
}
/////////////////////////////////////////////////////////////////

View file

@ -0,0 +1,64 @@
/////////////////////////////////////////////////////////////////
#include "Button2.h"
/////////////////////////////////////////////////////////////////
#define BUTTON_PIN_1 3
#define BUTTON_PIN_2 4
/////////////////////////////////////////////////////////////////
Button2 button_1, button_2;
unsigned long now = 0;
byte counter = 0;
/////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(9600);
delay(50);
Serial.println("\n\nTrack dual button press & release");
button_1.begin(BUTTON_PIN_1);
button_1.setPressedHandler(pressed);
button_1.setReleasedHandler(released);
button_2.begin(BUTTON_PIN_2);
button_2.setPressedHandler(pressed);
button_2.setReleasedHandler(released);
}
/////////////////////////////////////////////////////////////////
void loop() {
button_1.loop();
button_2.loop();
}
/////////////////////////////////////////////////////////////////
void pressed(Button2& btn) {
counter++;
if (counter == 2) {
now = millis();
Serial.println("now!");
}
}
/////////////////////////////////////////////////////////////////
void released(Button2& btn) {
counter--;
if (counter == 0) {
if (now != 0) {
Serial.print("Pressed for: ");
Serial.print(millis() - now);
Serial.println("ms");
}
now = 0;
}
}
/////////////////////////////////////////////////////////////////