Bueno, has escrito un código, pero sin entender qué has escrito.
Vamos por partes. Quieres que el código, haga algo, cuando el botón está en high. Para ello, recuerda poner una resistencia pull down en la entrada del pulsador.
Si no quieres que haga nada al soltar el pulsador, toda la parte del else, sobra, y todo lo que esté fuera del if, también.
Vamos a por for. Con ese bucle for, consigues 7 parpadeos, no 3. ¿Por que?. Inicializas a un valor de 3, y haces que se repita hasta que x sea menor que 10, con incrementos de uno en uno, con el x++, de forma que se repetirá todo lo que has metido en el for, desde que x=3, hasta que x=9, o sea, 7 veces.
El código tendría que quedar una cosa así:
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
for (int x = 0; x < 3; x++) {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
}
}
Este código, solo ejecuta el bucle for, cuando se pulsa el botón. El bucle for, se repite, desde que x=0 hasta que x=2, o sea, 3 veces.
No es necesario un antirebote del pulsador, ya que los delays del bucle for, cumplen de sobra con esa función.
Si no quieres poner la resistencia pulldown, una variante del código podría ser esta:
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
for (int x = 0; x < 3; x++) {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
}
}
Con este código, conectaríamos un pin del pulsador al pin 2 y el otro a masa.
Otra sugerencia, es que si vas a poner un rele, no uses el pin 13, ya que este pin parpadea al encender el arduino o hacerle uh reset.