Pages: [1]   Go Down
Author Topic: Alguien me dice el error de mi mi codigo??  (Read 522 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 41
Posts: 2182
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

   

Onda
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
This is personal...
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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:
 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:
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); 
}
« Last Edit: March 23, 2012, 07:19:05 pm by PepeChorva » Logged

---
Saludos,
José Chorva
www.pepechorva.com
@pepechorva on twitter

Pages: [1]   Go Up
Jump to: