consider
const byte pinBut = A1;
byte butLst;
enum { None, SingleClick, DoubleClick };
// -----------------------------------------------------------------------------
int
chkButton (void)
{
const unsigned long ButTimeout = 250;
static unsigned long msecLst;
unsigned long msec = millis ();
if (msecLst && (msec - msecLst) > ButTimeout) {
msecLst = 0;
return SingleClick;
}
byte but = digitalRead (pinBut);
if (butLst != but) {
butLst = but;
delay (10); // **** debounce
if (LOW == but) { // press
if (msecLst) { // 2nd press
msecLst = 0;
return DoubleClick;
}
else
msecLst = 0 == msec ? 1 : msec;
}
}
return None;
}
// -----------------------------------------------------------------------------
void
loop ()
{
switch (chkButton ()) {
case SingleClick:
Serial.println ("single");
break;
case DoubleClick:
Serial.println ("double");
break;
}
}
// -----------------------------------------------------------------------------
void
setup ()
{
Serial.begin (9600);
pinMode (pinBut, INPUT_PULLUP);
butLst = digitalRead (pinBut);
}