Go Down

Topic: ayuda con void loop (Read 2317 times) previous topic - next topic

ivanlledo

Jul 11, 2012, 04:08 pm Last Edit: Jul 11, 2012, 04:16 pm by ivanlledo Reason: 1
buenas a todos tengo un pequeño problema que quizas sea mas facil de lo que me lo parece a mi,

este es el codigo de mi programa (que he ido acumulando de un sitio y de otro) pero quiero que el contenido de void loop se repita el numero
de veces que ponga en (int nfotos=600;) como deberia hacerlo,

si es que en el void loop se puede,

y otra duda que tengo es si se podria simplificar el programa
puesto que el numero de pasos y toma de foto supongo que se le podria decir que lo repita x veces
en una direccion y en otra un saludo y espero que algun alma caritativa me resuelva el problema he mirado
por muchas paginas pero no encuentro nada

Code: [Select]

programa para tomar fotografias panoramicas
*/
int nfotos=600;
int pasos = 4;
int temppas = 2000;
int temfoto = 1000;
int delayfoto = 200;
int pinArray[] = {13};    
int count = 0;
int timer = 1000;                          
#include <Stepper.h>

const int stepsPerRevolution = 48;  // change this to fit the number of steps per revolution
                                    // for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);            

void setup(){
 for (count=0;count<1;count++) {          // Configuramos todas
                                          // los PIN-es de golpe
   pinMode(pinArray[count], OUTPUT);
 }
    // set the speed at 60 rpm:
 myStepper.setSpeed(70);
 // initialize the serial port:
 Serial.begin(9600);
 pinMode(13, OUTPUT);
}

void loop(){
 Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("izquierda");
 myStepper.step(pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
  Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
 }
   Serial.println("derecha");
 myStepper.step(-pasos);
 delay(delayfoto);
 for (count=0;count<1;count++) {
  digitalWrite(pinArray[count], HIGH);    
  delay(timer);
  digitalWrite(pinArray[count], LOW);
  delay(delayfoto);
  }

}


Cheyenne

Para que una serie de instrucciones se repita un número determinado de veces tienes que ponerlo dentro de un for:

  for (i=0;i<nfotos;i++) {
//instrucciones a repetir "nfotos" veces
  }

El for puedes ponerlo dentro de una condición para que sólo se ejecute una vez. Por ejemplo si activas un pulsador.
http://cuadricopterodiyarduino.blogspot.com/

ivanlledo

#2
Jul 11, 2012, 04:29 pm Last Edit: Jul 11, 2012, 04:30 pm by ivanlledo Reason: 1
gracias por tu contestacion pero soy bastate nuevo en esto de arduino y no he entendido muy bien tu explicacion eso es lo que quiero hacer que al pulsar un boton emieza y se repita en nmero de veces que yo quiera se que con for se puede hacer pero no se donde ni como ponerlo gracias por tu respuesta y perdon por mi ignorancia ;)

ivanlledo

de hecho lo he utizado en mi codigo pero como he dicho cojiendolo de varias paginas y no se donde tengo que ponerlo para que repita todo el contenido del void loop

ivanlledo

ok ya lo voy entendiendo pero algo falla sera que no esta bien puesto en su sitio...

Code: [Select]

int i;
int nfotos=1;
int pasos = 4;
int temppas = 2000;
int temfoto = 1000;
int delayfoto = 200;
int pinArray[] = {13};     
int count = 0;
int timer = 1000;                         
#include <Stepper.h>

const int stepsPerRevolution = 48;  // change this to fit the number of steps per revolution
                                     // for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);           

void setup(){
  for (count=0;count<1;count++) {         
    pinMode(pinArray[count], OUTPUT);
  }
     // rpm 70
  myStepper.setSpeed(10);
  // initialize the serial port:
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop(){
  for (i=0;i<nfotos;i++)
  Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
 
}

 
}


ionhs

For necesita que le digas que quieres repetir para ellos se usan las llaves { } Todo lo que esté en medio se repetirá las veces que le hayas puesto. En el código te falta poner las dos llaves.

Mira atentamente lo que Cheyenne te comentaba, pero mira todo los comentarios también. SAlu2

curro92

Hola,
si quieres que la ejecución se repita un número concreto de veces, el for() lo puedes poner en setup() y dejar vacío el loop()

Esas líneas  que empiezan por
Code: [Select]
for (count=0;count<1;count++)
no hacen nada, porque count no puede incrementarse con la condición count < 0

ivanlledo


Hola,
si quieres que la ejecución se repita un número concreto de veces, el for() lo puedes poner en setup() y dejar vacío el loop()

Esas líneas  que empiezan por
Code: [Select]
for (count=0;count<1;count++)
no hacen nada, porque count no puede incrementarse con la condición count < 0



muchas gracias curro92 era tan sencillo como sacarlo de void loop y meterlo en setup de verdad muchas gracias no veas lo que me ha costado incluso lo he puesto pero como me ha dicho ionhs me faltaban las llaves que contenian las intrucciones y me devolvia un fallo

ivanlledo

ahora solo me falta añadir un boton que inicie el programa voy a investigar a ver como se hace no quiero daros mucho la tabarra ;) y asi aprendo jejeje

ivanlledo

bueno mi proyecto va avanzando ya he conseguido que al pulsar un boton se inicie el programa.... sigo investigando para hacer algo mas elaborado tipo menu en un display todavia me falta pero gracias a vosotros he avanzado bastante



Code: [Select]
int pulsador=2;
int i;
int foto=1;
int nfotos=1;
int pasos = 6;
int temppas = 1000;
int temfoto = 0500;
int delayfoto = 0500;
int pinArray[] = {13};     
int count = 0;
int timer = 1000; 
#include <Stepper.h>
const int stepsPerRevolution = 48;
Stepper myStepper(stepsPerRevolution, 8,9,10,11);           

void setup()
{
  pinMode(pulsador, INPUT);
  pinMode(foto, OUTPUT);
  for (i=0;i<nfotos;i++)
  for (count=0;count<1;count++) {         
    pinMode(pinArray[count], OUTPUT);
  }
     // rpm 70
  myStepper.setSpeed(40);
  // initialize the serial port:
  Serial.begin(9600);
 
}

void panodruino()
{
for (i=0;i<nfotos;i++){
  Serial.println("izquierda");
  myStepper.step(pasos);
   delay(delayfoto);
   for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("izquierda");
  myStepper.step(pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
   Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
    Serial.println("derecha");
  myStepper.step(-pasos);
  delay(delayfoto);
  for (count=0;count<1;count++) {
   digitalWrite(pinArray[count], HIGH);   
   delay(timer);
   digitalWrite(pinArray[count], LOW);
   delay(delayfoto);
  }
  }

}
void espera()
{
}



void loop()
{
  espera();
  if (digitalRead(2)==HIGH)

  panodruino();
}
}



Go Up