Alguien me dice el error de mi mi codigo??

quiero conntrolar el sentido de un motor paso a paso mediante 2 pulsadores

lo consigo hacer hacia un lado o hacia el otro pero cuando intento meter para poder girar a ambos sentidos me da un problema el programa y me dice

pap_pulsadores_en_proceso_de_funcionar.cpp: In function 'void loop()':
pap_pulsadores_en_proceso_de_funcionar:78: error: expected }' at end of input pap_pulsadores_en_proceso_de_funcionar:78: error: expected }' at end of input

este es mi codigo

const int buttonPinI = 7;
const int buttonPinD = 6;

int buttonStateI = 0;
int buttonStateD = 0;
int motorPin1 = 8; // PIN-es del Motor
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 50; // Delay que determina la velocidad de giro
void setup() {

pinMode(buttonPinI, INPUT);
pinMode(buttonPinD, INPUT);
pinMode(motorPin1, OUTPUT); // Configuración de los PIN-es como salida digital
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
{
buttonStateD = digitalRead(buttonPinD);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonStateD == HIGH) {
digitalWrite(motorPin1, LOW); // Los pines se activan en secuencia
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);

{
buttonStateI = digitalRead(buttonPinI);
if (buttonStateI == HIGH) {
digitalWrite(motorPin1, HIGH); // Los pines se activan en secuencia
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
else {

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}
}

Pues simplemente cambiar la llave de sentido en la linea 78.

Indenta un poco el código, ayuda a ver errores. :slight_smile:

La llave de la línea 48 está al revés, por cierto, si lo que quieres es escoger entre tres opciones, podrías hacerlo así;

  buttonStateD = digitalRead(buttonPinD);
   if (buttonStateD == HIGH) {     
...
}
 buttonStateI = digitalRead(buttonPinI);
 else
   if (buttonStateI == HIGH) {
     ...
   }
   else{
     digitalWrite(motorPin1, LOW);
     digitalWrite(motorPin2, LOW);
     digitalWrite(motorPin3, LOW);
     digitalWrite(motorPin4, LOW);
  }

para que detecte si hay pulsación derecha, si no, si hay pulsación izquierda si no, que ponga todo low...

Es más, te recomiendo que metas en funciones estas tres partes, sabes que por separado funcionan, y en la función de control (en este caso loop) podrías ver más fácil donde tienes los fallos, además de poder reutilizarlas en muchos más lugares, si hiciera falta. Te dejo el código retocado;

const int buttonPinI = 7;
const int buttonPinD = 6;
 
 int buttonStateI = 0;
 int buttonStateD = 0;
 int motorPin1 = 8;                              // PIN-es del Motor
 int motorPin2 = 9;
 int motorPin3 = 10;
 int motorPin4 = 11;
 int delayTime = 50;                            // Delay que determina la velocidad de giro
void setup() {

  pinMode(buttonPinI, INPUT);    
  pinMode(buttonPinD, INPUT); 
  pinMode(motorPin1, OUTPUT);                    // Configuración de los PIN-es como salida digital
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
}
void loop()
{  
  buttonStateD = digitalRead(buttonPinD);
  buttonStateI = digitalRead(buttonPinI);
 
  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonStateD == HIGH) {     
    moveDer();
  }
  else{
    if (buttonStateI == HIGH) {     
      moveIz();
    }
    else {
    stopMotor();
    }
  }
}

void stopMotor(){
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
}

void moveDer(){
  digitalWrite(motorPin1, LOW);                 // Los pines se activan en secuencia
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  }

void moveIz(){
  digitalWrite(motorPin1, HIGH);                 // Los pines se activan en secuencia
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, HIGH);
  digitalWrite(motorPin4, LOW);
  delay(delayTime);
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
  digitalWrite(motorPin3, LOW);
  digitalWrite(motorPin4, HIGH);
  delay(delayTime);  
}