Skip to content

Commit 999adb3

Browse files
committed
Add button continuous long press method
1 parent 3a4dee0 commit 999adb3

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

examples/Basics/Button/Button.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ void loop() {
3434
M5.update();
3535

3636
// if you want to use Releasefor("was released for"), use .wasReleasefor(int time) below
37-
if (M5.BtnA.wasReleased()) {
37+
if (M5.BtnA.wasReleased() || M5.BtnA.pressedFor(1000, 200)) {
3838
M5.Lcd.print('A');
39-
} else if (M5.BtnB.wasReleased()) {
39+
} else if (M5.BtnB.wasReleased() || M5.BtnB.pressedFor(1000, 200)) {
4040
M5.Lcd.print('B');
41-
} else if (M5.BtnC.wasReleased()) {
41+
} else if (M5.BtnC.wasReleased() || M5.BtnC.pressedFor(1000, 200)) {
4242
M5.Lcd.print('C');
4343
} else if (M5.BtnB.wasReleasefor(700)) {
4444
M5.Lcd.clear(BLACK);

src/utility/Button.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,14 @@ uint8_t Button::pressedFor(uint32_t ms) {
120120
return (_state == 1 && _time - _lastChange >= ms) ? 1 : 0;
121121
}
122122

123+
uint8_t Button::pressedFor(uint32_t ms, uint32_t continuous_time) {
124+
if (_state == 1 && _time - _lastChange >= ms && _time - _lastLongPress >= continuous_time) {
125+
_lastLongPress = _time;
126+
return 1;
127+
}
128+
return 0;
129+
}
130+
123131
uint8_t Button::releasedFor(uint32_t ms) {
124132
return (_state == 0 && _time - _lastChange >= ms) ? 1 : 0;
125133
}

src/utility/Button.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class Button {
2424
uint8_t wasPressed();
2525
uint8_t wasReleased();
2626
uint8_t pressedFor(uint32_t ms);
27+
uint8_t pressedFor(uint32_t ms, uint32_t continuous_time);
2728
uint8_t releasedFor(uint32_t ms);
2829
uint8_t wasReleasefor(uint32_t ms);
2930
uint32_t lastChange();
@@ -38,6 +39,7 @@ class Button {
3839
uint32_t _time; //time of current state (all times are in ms)
3940
uint32_t _lastTime; //time of previous state
4041
uint32_t _lastChange; //time of last state change
42+
uint32_t _lastLongPress; //time of last state change
4143
uint32_t _dbTime; //debounce time
4244
uint32_t _pressTime; //press time
4345
uint32_t _hold_time; //hold time call wasreleasefor

0 commit comments

Comments
 (0)