Pages: [1]   Go Down
Author Topic: ayuda con void loop  (Read 1868 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

« Last Edit: July 11, 2012, 09:16:44 am by ivanlledo » Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
« Last Edit: July 11, 2012, 09:30:57 am by ivanlledo » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Logged

Donostia
Offline Offline
God Member
*****
Karma: 3
Posts: 744
elektronikadonbosco
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
for (count=0;count<1;count++)
no hacen nada, porque count no puede incrementarse con la condición count < 0
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink y asi aprendo jejeje
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Logged

Pages: [1]   Go Up
Jump to: