Well, you could try it this way..
#include <mechButton.h>
#include <blinker.h>
#define BUTTON_PIN 11
#define LED_PIN 13
#define BLINK_MS 500.0
#define HOLD_MS 1000
mechButton theButton(BUTTON_PIN); // A debounced button object. (Hook button between pin & ground)
blinker theBlinker(LED_PIN,BLINK_MS/2,BLINK_MS); // A fire and forget blinker object.
timeObj pushTimer(HOLD_MS); // A timer object
void setup(void) {
theBlinker.setOnOff(false); // Make sure the blinker is acutaly off.
theButton.setCallback(btnClicked); // Set the callback for the button.
}
// This gets called when the button is clicked.
void btnClicked(void) {
if (!theButton.trueFalse()) { // If it has been grounded..
pushTimer.start(); // Start the timer.
theBlinker.setPercent(100); // Set the blinker to full on.
theBlinker.setOnOff(true); // Fire it up.
} else { // Else, button released..
theBlinker.setOnOff(false); // SHut off the blinker.
}
}
void loop(void) {
idle(); // idle runs the stuff in the background (button & binker)
if (!theButton.trueFalse()) { // If the button is currently pressed..
if (pushTimer.ding()) { // If the timer has expired..
theBlinker.setPercent(50); // Start blinking!
}
}
}
You'll need to install LC_baseTools from the library manager to compile this.
Good luck & have fun!
-jim lee