Show Posts
Pages: [1]
1  International / Español / Re: Problema con && en un do... while on: October 05, 2011, 06:00:31 pm
Hola fm

 Tienes razon lo habia puesto mas bien como prueba de concepto, pero tiene facil arreglo

do {} while(!digitalRead(inicio));




Gracias por la ayuda, hay otra cosa a tener en cuenta, esto es parte de n cronometro de picadas o arrancones o p ink races, como lo lamen en su lugar de origen,

entonces el bucle tiene q salir cuando los 2 vehiculos pasen por el ultimo sensor , utilizo variables condicionadas por si es el caso de que haya mucho tienpo entre el cruce de un vehiculo y el otro por el sensor correspondiente a su carril...

2  International / Español / Re: Problema con && en un do... while on: October 04, 2011, 07:48:01 pm
Rectifico, no me di cuenta que es un do--while, erré en la sentencia

exacto.. smiley-grin gracias por tu tiempo igualmente...

Por cierto, si estas midiendo tiempos el primer coche tiene ventaja sobre el segundo, no hagas trampas eh? :-)

Exacto... es así, como piensas que se podría corregir eso, sin poner un modulo extra....
3  International / Español / Re: Problema con && en un do... while on: October 03, 2011, 05:51:43 pm
Yo pondría entre parentésis los dos términos que compruebas si son iguales a 1 y en medio &&, quedando asi:

while((termino1==1) && (termino2==1));

Lo probe no funciono ... smiley-sad

Hola,
Falta parte del código, y no lo puedo probar. De todas formas, creo que tienes una llave de cierre de más. ¿Te compila bien?
Code:
void loop()
{
  do{
  }while();
  
  do{
  }while();
  
  ROTURA:
}

} // <-----------------------


Si lo compila recorte parte del codigo por meros motivos de espacio, se ve q quedo una llave colgada...

la declaracion de variables hazla fuera del loop()


Esta hecha, pero luego necesito ecesito reiniciar las variables una vez q sale del do while

Gracias por las repsuestas estoy modificando para usar otro condicionador a ver que pasa
4  International / Español / Problema con && en un do... while on: October 03, 2011, 07:41:04 am
Tengo el siguiente codigo resumido....

Code:
// Software de Arduino Duemilanove - Control
// Revision 16-07-2011
// Version 1.01
....


....
void loop(){

  //Declaracion de variables
  int cond1 = 0;
   
  int tiempo_inicial = 0;
  int tiempo1_carril1 = 0;
  int tiempo2_carril1 = 0;
  int tiempo3_carril1 = 0;
  int tiempo1_carril2 = 0;
  int tiempo2_carril2 = 0;
  int tiempo3_carril2 = 0;
  int tiempo_actual = 0;
 
  int sensor11 = 0;
  int sensor21 = 0;
  int sensor12 = 0;
  int sensor13 = 0;
  int sensor22 = 0;
  int sensor23 = 0;
 
  digitalWrite(estado , LOW);
 
  //Verificar la señal de inicio desde el Mini
 
  do{
 
    if(digitalRead(inicio) == 1){
   
      cond1 = 1;
     
    }
    else{
   
      cond1 = 0;
     
    }
   
  }while(cond1 == 0);
 
  //Inicio de la cuenta
 
  tiempo_inicial = millis();
 
  //Registro y muestra de tiempos parciales y finales
  do{
 
...

...
    //Tiempo final - Carril 1
    if(digitalRead(final1) == HIGH){
      sensor13 = 1;
      tiempo_actual = millis();
      tiempo3_carril1 = tiempo_actual - tiempo_inicial;
      muestraTiempo(tiempo3_carril1 , 0);
     
    }
    else{
      sensor13 = 0;
    }
   
    //Tiempo final - Carril 2
    if(digitalRead(final2) == HIGH){
      sensor23 = 1;
      tiempo_actual = millis();
      tiempo3_carril2 = tiempo_actual - tiempo_inicial;
      muestraTiempo(tiempo3_carril2 , 1);
     
    }
    else{
      sensor23 = 0;
    }
 
...

...

  }while(sensor13 == 1 && sensor23 == 1 ); //Finaliza bucle cuando ambos autos finalizaron
 
  ROTURA:
 
  delay(30000); //Demora hasta que el sistema queda listo para un nuevo inicio
 
  digitalWrite(estado , HIGH);
 
 
}


}


haciendo pruebas encontre q el && dentro del do.. while no funciona correctamente, funciona mas como un ||

obviamente estoy cambiando la sintaxis a ver si funciona, pero alguien le paso algo similar?

5  International / Español / 20V - optoacoplador - Arduino mini - on: August 08, 2011, 07:39:43 pm
Buenas les comento mi problema . . .

Estoy reviviendo una señal de un sensor, básicamente una señal binaria, de 20V, utilizo un octoacoplador 3041, con una resistencia de 2k2 y del otro lado conecto 5v en una pata y otra al input del arduino mini con una R a maza si pruebo el cectircuito sin el arduino y utilizo un led funciona correcatamente, cuando le conecto el arduino y le doy un pulso en lso 20v el circuito queda cerrado...
6  Forum 2005-2010 (read only) / Español / Re: Comportamiento Raro, Programa? o Hardware? on: January 18, 2011, 04:49:50 pm
si, en realidad la funcion... funciona...

el paso q no funciona correctamente es
Code:
     digitalWrite(BotonUp, HIGH);
      delay(50);
      digitalWrite(BotonUp, LOW);

el comando anterior funciona, "Xbox"

si lo pongo al inicio, a este bloque.. tembien funciona...

es muy raro...
7  Forum 2005-2010 (read only) / Español / Comportamiento Raro, Programa? o Hardware? on: January 18, 2011, 03:37:35 pm
buenas les comento mi problemilla...

tengo armado al Arduino deminueve un controlado de un jostick de una Xbox360, que necesito que ejecute unos comando, haga una temporizacion y vuelva a ejecutar unos comandos...

Si divido el programas en partes seria basicamente
Inicia, temporiza, termina,

Code:
/*
  Contol de xbox360
  Por xeleneo.com.ar
*/
// set pin numbers:
const int Coin = 2;    
const int Time1 = 10;
const int Time2 = 11;
const int ledPin =  13;      
const int BotonA =  6;      
const int Xbox =  5;    
const int BotonUp =  3;    
const int Trafo =  4;    


// variables will change:
int CoinState = 0;         // variable for reading the pushbutton status
int Contador = 0;          //
boolean run = false;
int Time1State = 0;
int Time2State = 0;

void setup() {
  Serial.begin(9600);  
  pinMode(ledPin, OUTPUT);    
  pinMode(BotonA, OUTPUT);
  pinMode(Xbox, OUTPUT);
  pinMode(BotonUp, OUTPUT);  
  pinMode(Trafo, OUTPUT);
  pinMode(Coin, INPUT);    
  pinMode(Time1, INPUT);
  pinMode(Time2, INPUT);    
}


void loop(){
  CoinState = digitalRead(Coin); // Leer estado del Coin
  Time1State = digitalRead(Time1);
  Time2State = digitalRead(Time2);
  
  if (CoinState == HIGH) {    
      if (Time1State == HIGH){
        Contador = Contador + 300;    
        Serial.print("Time1 \n");
      } else{
        if (Time2State == HIGH){
          Contador = Contador + 400;
          Serial.print("Time2 \n");
        } else{
          Contador = Contador + 500;
          Serial.print("Time3 \n");  
        }// end Time3
    }

    //Arriba();
    
    digitalWrite(ledPin, HIGH);    
    digitalWrite(BotonA, HIGH);
    delay(50);
    digitalWrite(BotonA, LOW);
    digitalWrite(Trafo, HIGH);
    Serial.print("Coin \n");
    run = true;
  }

  if (run == true) {  
  

    if (Contador > 1 ){
       Contador = Contador -- ;
      Serial.print("\n Contador: ");
      Serial.print(Contador);
      delay (100);
    
    }  else {
      Serial.print("\nSecuancia apagado \n");
      run = false;
      
      SecuenciaApagado();
            
      delay(100);
      Serial.print("\nApaga Trafo \n");
      digitalWrite(Trafo, LOW);
      digitalWrite(ledPin, LOW);              
          
            
    } // Fin contador
  
  } //Fin del run
  
}//Fin del LOOP

int  SecuenciaApagado(){
  
  
      digitalWrite(ledPin, LOW);
      digitalWrite(Xbox, HIGH);
      delay(50);
      digitalWrite(Xbox, LOW);      
      delay(1000);
      digitalWrite(BotonA, HIGH);
      delay(50);
      digitalWrite(BotonA, LOW);
      delay(1000);
      
      Arriba();
      
      delay(1000);
      digitalWrite(BotonA, HIGH);
      delay(500);
      digitalWrite(BotonA, LOW);
      
}

int Arriba(){
      digitalWrite(BotonUp, HIGH);
      delay(50);
      digitalWrite(BotonUp, LOW);


}


Pasa que cuando corre el prog en el arduino, la funcion de Ariba() no da respuesta, originalmente estaba en la misma funcion de SecuenciaApagado() y tampoco respondia en ese punto,

Los circuitos por separado funcionan bien, de hecho si saco la funcion y la pongo al principio del prog funciona correctamente, pero no donde la necesito.

Alguna idea? :o
Pages: [1]