mirror of
https://github.com/jaksatomovic/esp32-clickwheel.git
synced 2025-08-29 07:48:28 -04:00
first commit
This commit is contained in:
commit
868b14f8c8
286 changed files with 59925 additions and 0 deletions
35
lib/Button2/examples/ButtonLoop/ButtonLoop.ino
Normal file
35
lib/Button2/examples/ButtonLoop/ButtonLoop.ino
Normal 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());
|
||||
|
||||
|
||||
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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
|
||||
/////////////////////////////////////////////////////////////////
|
62
lib/Button2/examples/LongpressHandler/LongpressHandler.ino
Normal file
62
lib/Button2/examples/LongpressHandler/LongpressHandler.ino
Normal 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");
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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");
|
||||
}
|
55
lib/Button2/examples/MultiHandler/MultiHandler.ino
Normal file
55
lib/Button2/examples/MultiHandler/MultiHandler.ino
Normal 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(")");
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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();
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////
|
45
lib/Button2/examples/MultipleButtons/MultipleButtons.ino
Normal file
45
lib/Button2/examples/MultipleButtons/MultipleButtons.ino
Normal 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");
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
80
lib/Button2/examples/SingleButton/SingleButton.ino
Normal file
80
lib/Button2/examples/SingleButton/SingleButton.ino
Normal 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");
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
|
@ -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");
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
Loading…
Add table
Add a link
Reference in a new issue