Go Down

Topic: Alguien me dice el error de mi mi codigo?? (Read 564 times) previous topic - next topic

ruterin

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);
}
}

fm

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

PepeChorva

#2
Mar 24, 2012, 12:08 am Last Edit: Mar 24, 2012, 01:19 am by PepeChorva Reason: 1
Indenta un poco el código, ayuda a ver errores.  :)

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í;
Code: [Select]

 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;
Code: [Select]

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); 
}
---
Saludos,
José Chorva
www.pepechorva.com
@pepechorva on twitter

Go Up