void setup()
{
Serial.begin(9600);
pinMode (2, INPUT_PULLUP);
}
void loop()
{
static unsigned long debounceTime;
static unsigned long clickTime;
static bool stateOld;
static bool press; // long press
if (millis() - debounceTime >= 50)
{
debounceTime = millis(); // update every 50mS
bool stateNew = !digitalRead(2); // true for press
if (stateOld != stateNew) // press or release
{
stateOld = stateNew;
if (stateNew == true) // if new state is pressed
{
clickTime = millis();
press = true;
} else if (press == true) // 50mS later, if released
{
press = false;
Serial.println("pressed short");
}
}
}
// 1000mS after press
if (press == true && millis() - clickTime >= 1000 )
{
press = false;
Serial.println("pressed long");
}
}