Para saber un tiempo más o menos exacto necesitas la función
millis(), con el código que has puesto, aunque esta mal, te devolverá los loop's en los que ha estado pulsado el botón.
Este seria tu código corregidor, no lo he probado.
int pin = 2;
int duration = 0;
int x = 0;
void setup()
{
pinMode(pin, INPUT);
Serial.begin(9600);
}
void loop()
{
duration = digitalRead(pin);
if(duration==HIGH) { // Le falta los corchetes al if
x++;
Serial.println(x);
} else {
x = 0; // pone a 0 la variable x
}
}
Lo que quieres hacer te va a costar mucho ya que yo te veo muy verde.
Un saludo!