#include <Bounce.h>
#define BUTTON_A 4
#define BUTTON_B 3
#define BUTTON_C 8
#define MyMin 1
#define MyMax 9999
#define MyMaxInc 1000
Bounce bouncer_A = Bounce( BUTTON_A, 5 );
Bounce bouncer_B = Bounce( BUTTON_B, 5 );
Bounce bouncer_C = Bounce( BUTTON_C, 5 );
static int value = 0;
static int number = 900;
static int increment_A = 1;
static int decrement_B = 1;
static elapsedMillis msec_A_held = 0;
static elapsedMillis msec_B_held = 0;
static elapsedMillis msec_C_held = 0;
static elapsedMillis msec_A_held2 = 0;
static elapsedMillis msec_B_held2 = 0;
static bool RunStop = 0;
void setup() {
// SET UP HOW YOU WILL SEE NUMBERS CHANGE HERE
pinMode(BUTTON_A, INPUT_PULLUP);
pinMode(BUTTON_B, INPUT_PULLUP);
pinMode(BUTTON_C, INPUT_PULLUP);
}
void loop() {
// output here so you can see number change
bouncer_A .update( );
value = bouncer_A.read();
if ( value == LOW) {
if (msec_A_held >= 150) {
number = number + increment_A;
msec_A_held = 0;
if (number > MyMax ) number = MyMax ;
}
if (msec_A_held2 >= 1501) {
increment_A = increment_A * 10;
msec_A_held2 = 0;
if (increment_A > MyMaxInc) increment_A = MyMaxInc;
}
}
else {
msec_A_held = 0;
msec_A_held2 = 0;
increment_A = 1;
}
bouncer_B .update( );
value = bouncer_B.read();
if ( value == LOW) {
if (msec_B_held >= 150) {
number = number - decrement_B;
msec_B_held = 0;
if (number < MyMin) number = MyMin;
}
if (msec_B_held2 >= 1501) {
decrement_B = decrement_B * 10;
msec_B_held2 = 0;
if (decrement_B > MyMaxInc) decrement_B = MyMaxInc;
}
}
else {
msec_B_held = 0;
msec_B_held2 = 0;
decrement_B = 1;
}
bouncer_C .update ( );
value = bouncer_C.read();
if ( value == LOW) {
if (msec_C_held >= 100) RunStop = false;
if (msec_C_held >= 2000) RunStop = true;
}
else {
msec_C_held = 0;
}
// do something using number or set state so it runs
if (RunStop == true){
// stop something or set state so nothing else updates number
}
else {
// start it backup
}
}