Sentencia if despues de la sentecia For

Buenas.
Soy nuevo en esto de arduino y estoy haciendo un trabajo con mi hijo, necesito ayuda.
Estoy moviendo unas patas, con motores paso a paso. Y necesito que el motor se active cuando pulse y se desactive cuando pulse otra vez, pero que acaba siempre la función, ya que los motores tiene que acabar y empezar siempre igual.
Inserto el codigo

void loop() {
 buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) 
{
  for (int i = 0; i < 42; i=i+1)//512*4 = 2048 pasos HACIA DELANTE
{
  digitalWrite(IN1, HIGH); // PASO 1 1 pierna
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, HIGH);// PASO 1 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 2 1 pierna
  digitalWrite(IN2, HIGH);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 2 2 pierna
  digitalWrite(IN6, HIGH);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 3 1 PIERNA
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, HIGH); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 3 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, HIGH); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 4 1 PIERNA
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, HIGH);
  digitalWrite(IN5, LOW); // PASO 4 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, HIGH);  
  delay(demora);
}
}
 else {
    exit(0); 
  }

Gracias

Moderador:
Edité el código porque veo que tuviste la intención pero quedó mal. Cuado eso ocurra vuelve y edita, este modo.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en (<CODE/>)



Siempre postea códigos completos, no parciales.
Tu queires que una pulsacion haga una cosa y la siguiente la deje de hacer.
Requieres entonces que una variable se ponga en 1 con una pulsacion si previamente valía 0 y luego al presionar se vuelva a cambiar de estado.

Se hace asi

// agrega antes del setup estas dos variables
int estado = 0;  
int buttonStateAnt = 0;

ahora en tu loop


void loop() {
   buttonState = digitalRead(buttonPin);
 
  if (buttonState == HIGH && buttonStateAnt == LOW) {
      estado = 1 - estado;
  }
  buttonStateAnt = buttonState;
  if (estado) {
	  for (int i = 0; i < 42; i=i+1){ //512*4 = 2048 pasos HACIA DELANTE
	  digitalWrite(IN1, HIGH); // PASO 1 1 pierna
	  digitalWrite(IN2, LOW);  
	  digitalWrite(IN3, LOW); 
	  digitalWrite(IN4, LOW); 
	  digitalWrite(IN5, HIGH);// PASO 1 2 PIERNA
	  digitalWrite(IN6, LOW);  
	  digitalWrite(IN7, LOW); 
	  digitalWrite(IN8, LOW); 
	  delay(demora);

	  digitalWrite(IN1, LOW); // PASO 2 1 pierna
	  digitalWrite(IN2, HIGH);  
	  digitalWrite(IN3, LOW); 
	  digitalWrite(IN4, LOW); 
	  digitalWrite(IN5, LOW); // PASO 2 2 pierna
	  digitalWrite(IN6, HIGH);  
	  digitalWrite(IN7, LOW); 
	  digitalWrite(IN8, LOW); 
	  delay(demora);

	  digitalWrite(IN1, LOW); // PASO 3 1 PIERNA
	  digitalWrite(IN2, LOW);  
	  digitalWrite(IN3, HIGH); 
	  digitalWrite(IN4, LOW); 
	  digitalWrite(IN5, LOW); // PASO 3 2 PIERNA
	  digitalWrite(IN6, LOW);  
	  digitalWrite(IN7, HIGH); 
	  digitalWrite(IN8, LOW); 
	  delay(demora);

	  digitalWrite(IN1, LOW); // PASO 4 1 PIERNA
	  digitalWrite(IN2, LOW);  
	  digitalWrite(IN3, LOW); 
	  digitalWrite(IN4, HIGH);
	  digitalWrite(IN5, LOW); // PASO 4 2 PIERNA
	  digitalWrite(IN6, LOW);  
	  digitalWrite(IN7, LOW); 
	  digitalWrite(IN8, HIGH);  
	  delay(demora);
	}
  }

Muchas gracias, por tu ayuda.

Hola.
Me da problemas al compilarlo. te agradeceria tu ayuda.


<
int IN1=0;
int IN2=1;
int IN3=2;
int IN4=3;
int IN5=4;
int IN6=5;
int IN7=6;
int IN8=7;
const int inputPin = 12; 
int estado = 0;  
int buttonStateAnt = 0;
int demora=20; //eSto es la demora entre pasos, no debe ser superior a 10 ms.

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(IN5, OUTPUT);
  pinMode(IN6, OUTPUT);
  pinMode(IN7, OUTPUT);
  pinMode(IN8, OUTPUT);
 pinMode(buttonStateAnt, INPUT);
}

void loop() {
   buttonState = digitalRead(buttonPin);
 
  if (buttonState == HIGH && buttonStateAnt == LOW) {
      estado = 1 - estado;
  }
  buttonStateAnt = buttonState;
  if (estado) {
  for (int i = 0; i < 42; i=i+1)//512*4 = 2048 pasos HACIA DELANTE
{
  digitalWrite(IN1, HIGH); // PASO 1 1 pierna
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, HIGH);// PASO 1 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 2 1 pierna
  digitalWrite(IN2, HIGH);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 2 2 pierna
  digitalWrite(IN6, HIGH);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 3 1 PIERNA
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, HIGH); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 3 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, HIGH); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 4 1 PIERNA
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, HIGH);
  digitalWrite(IN5, LOW); // PASO 4 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, HIGH);  
  delay(demora);
}
  digitalWrite(IN1, LOW); // DESCANSO DE BOBINAS EN PIERNA 1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN1, LOW); // DESCANSO DE BOBINAS EN PIERNA 2
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  delay(5000);

for (int i = 42; i >= 0; i=i-1)//512*4 = 2048 pasos LEVANTAMOS PIERNA
{
  digitalWrite(IN1, LOW); // PASO 4 PIERNA1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, HIGH); 
  digitalWrite(IN5, LOW); // PASO 4 PIERNA2
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, HIGH); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 3 PIERNA 1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, HIGH); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 3 PIERNA 2
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, HIGH); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 2 PIERNA 1
  digitalWrite(IN2, HIGH);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 2 PIERNA 2
  digitalWrite(IN6, HIGH);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);


  digitalWrite(IN1, HIGH); // PASO 1 PIERNA1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, HIGH); // PASO 1 PIERNA 2
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

}
 else {
    exit(0); 
  }
/>

Muchas gracias

Perdona, he escrito este código y no me da problemas de compilación. Pero solo se activa si lo mando con el pulsador activado a la vez y no me hace bucle. Muchas gracias.

int IN1=0;
int IN2=1;
int IN3=2;
int IN4=3;
int IN5=4;
int IN6=5;
int IN7=6;
int IN8=7;
int estado = 0;  
int buttonStateAnt = 0;
int buttonState = 1;

int demora=15; //eSto es la demora entre pasos, no debe ser superior a 10 ms.    
void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(IN5, OUTPUT);
  pinMode(IN6, OUTPUT);
  pinMode(IN7, OUTPUT);
  pinMode(IN8, OUTPUT);
  pinMode(buttonPin, INPUT);
}
void loop() {
   buttonState = digitalRead(buttonPin);
 
  if (buttonState == HIGH && buttonStateAnt == LOW) {
      estado = 1 - estado;
 {
  for (int i = 0; i < 42; i=i+1)//512*4 = 2048 pasos HACIA DELANTE
{
  digitalWrite(IN1, HIGH); // PASO 1 1 pierna
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, HIGH);// PASO 1 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 2 1 pierna
  digitalWrite(IN2, HIGH);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 2 2 pierna
  digitalWrite(IN6, HIGH);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 3 1 PIERNA
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, HIGH); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 3 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, HIGH); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 4 1 PIERNA
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, HIGH);
  digitalWrite(IN5, LOW); // PASO 4 2 PIERNA
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, HIGH);  
  delay(demora);
}
  digitalWrite(IN1, LOW); // DESCANSO DE BOBINAS EN PIERNA 1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN1, LOW); // DESCANSO DE BOBINAS EN PIERNA 2
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  delay(5000);

for (int i = 42; i >= 0; i=i-1)//512*4 = 2048 pasos LEVANTAMOS PIERNA
{
  digitalWrite(IN1, LOW); // PASO 4 PIERNA1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, HIGH); 
  digitalWrite(IN5, LOW); // PASO 4 PIERNA2
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, HIGH); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 3 PIERNA 1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, HIGH); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 3 PIERNA 2
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, HIGH); 
  digitalWrite(IN8, LOW); 
  delay(demora);

  digitalWrite(IN1, LOW); // PASO 2 PIERNA 1
  digitalWrite(IN2, HIGH);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, LOW); // PASO 2 PIERNA 2
  digitalWrite(IN6, HIGH);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);


  digitalWrite(IN1, HIGH); // PASO 1 PIERNA1
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  digitalWrite(IN5, HIGH); // PASO 1 PIERNA 2
  digitalWrite(IN6, LOW);  
  digitalWrite(IN7, LOW); 
  digitalWrite(IN8, LOW); 
  delay(demora);
}
digitalWrite(IN1, LOW); // PASO 2
  digitalWrite(IN2, LOW);  
  digitalWrite(IN3, LOW); 
  digitalWrite(IN4, LOW); 
  delay(5000);
 exit(0); 
}
  }
 else {
    exit(0); 
  }
}
  

Pues veo que no estas aprendiendo asi que lo diré con paciencia.
Cuando compilas si te da errores corresponde que copies y pegues los errores. Mira en tu caso,

C:\Users\surby\AppData\Local\Temp\.arduinoIDE-unsaved202407-11036-1mk5j1o.2xw4\sketch_jan7b\sketch_jan7b.ino:23:11: error: 'buttonPin' was not declared in this scope
   pinMode(buttonPin, INPUT);

Ahi dice

error: 'buttonPin' was not declared in this scope
   pinMode(buttonPin, INPUT);

buttonPin no ha sido declarado en este sketch.
Como tu no pusiste todo el código yo inventé esa variable o constante.
En tu caso se llama

const int inputPin = 12; 

No se te ocurrió que eran la misma? Evidentemente no.

Bueno acá todo corregido

int IN1=0;
int IN2=1;
int IN3=2;
int IN4=3;
int IN5=4;
int IN6=5;
int IN7=6;
int IN8=7;
const int inputPin = 12; 
int estado = 0;  
int buttonState = 0;
int buttonStateAnt = 0;
int demora=20; //eSto es la demora entre pasos, no debe ser superior a 10 ms.



void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  pinMode(IN5, OUTPUT);
  pinMode(IN6, OUTPUT);
  pinMode(IN7, OUTPUT);
  pinMode(IN8, OUTPUT);
  pinMode(inputPin, INPUT);
}

void loop() {
  buttonState = digitalRead(inputPin);

  if (buttonState == HIGH && buttonStateAnt == LOW) {
    estado = 1 - estado;
    {
      for (int i = 0; i < 42; i = i + 1)  //512*4 = 2048 pasos HACIA DELANTE
      {
        digitalWrite(IN1, HIGH);  // PASO 1 1 pierna
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, LOW);
        digitalWrite(IN5, HIGH);  // PASO 1 2 PIERNA
        digitalWrite(IN6, LOW);
        digitalWrite(IN7, LOW);
        digitalWrite(IN8, LOW);
        delay(demora);

        digitalWrite(IN1, LOW);  // PASO 2 1 pierna
        digitalWrite(IN2, HIGH);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, LOW);
        digitalWrite(IN5, LOW);  // PASO 2 2 pierna
        digitalWrite(IN6, HIGH);
        digitalWrite(IN7, LOW);
        digitalWrite(IN8, LOW);
        delay(demora);

        digitalWrite(IN1, LOW);  // PASO 3 1 PIERNA
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, HIGH);
        digitalWrite(IN4, LOW);
        digitalWrite(IN5, LOW);  // PASO 3 2 PIERNA
        digitalWrite(IN6, LOW);
        digitalWrite(IN7, HIGH);
        digitalWrite(IN8, LOW);
        delay(demora);

        digitalWrite(IN1, LOW);  // PASO 4 1 PIERNA
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, HIGH);
        digitalWrite(IN5, LOW);  // PASO 4 2 PIERNA
        digitalWrite(IN6, LOW);
        digitalWrite(IN7, LOW);
        digitalWrite(IN8, HIGH);
        delay(demora);
      }
      digitalWrite(IN1, LOW);  // DESCANSO DE BOBINAS EN PIERNA 1
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      digitalWrite(IN1, LOW);  // DESCANSO DE BOBINAS EN PIERNA 2
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      delay(5000);

      for (int i = 42; i >= 0; i = i - 1)  //512*4 = 2048 pasos LEVANTAMOS PIERNA
      {
        digitalWrite(IN1, LOW);  // PASO 4 PIERNA1
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, HIGH);
        digitalWrite(IN5, LOW);  // PASO 4 PIERNA2
        digitalWrite(IN6, LOW);
        digitalWrite(IN7, LOW);
        digitalWrite(IN8, HIGH);
        delay(demora);

        digitalWrite(IN1, LOW);  // PASO 3 PIERNA 1
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, HIGH);
        digitalWrite(IN4, LOW);
        digitalWrite(IN5, LOW);  // PASO 3 PIERNA 2
        digitalWrite(IN6, LOW);
        digitalWrite(IN7, HIGH);
        digitalWrite(IN8, LOW);
        delay(demora);

        digitalWrite(IN1, LOW);  // PASO 2 PIERNA 1
        digitalWrite(IN2, HIGH);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, LOW);
        digitalWrite(IN5, LOW);  // PASO 2 PIERNA 2
        digitalWrite(IN6, HIGH);
        digitalWrite(IN7, LOW);
        digitalWrite(IN8, LOW);
        delay(demora);


        digitalWrite(IN1, HIGH);  // PASO 1 PIERNA1
        digitalWrite(IN2, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN4, LOW);
        digitalWrite(IN5, HIGH);  // PASO 1 PIERNA 2
        digitalWrite(IN6, LOW);
        digitalWrite(IN7, LOW);
        digitalWrite(IN8, LOW);
        delay(demora);
      }
      digitalWrite(IN1, LOW);  // PASO 2
      digitalWrite(IN2, LOW);
      digitalWrite(IN3, LOW);
      digitalWrite(IN4, LOW);
      delay(5000);
      exit(0);
    }
  } else {
    exit(0);
  }
}

Ya me dirás si funciona o no.

Ok
Muchas gracias.
Ya te digo.

Hola.
No me funciona, los motores se mueven aunque no esté pulsado.
Muchas gracias por tu ayuda

Me ha explicado mal.
La idea es volcar el programa a la placa de arduino y que no empiece a funcionar hasta que no de al pulsador.
ahora funciona cuando doy al pulsador y luego vuelco los datos.
Gracias

Controla el inicio de la aplicación, cambia a 1 y su acciónamiento será al revés.