Anuncio TOP B1 Mensaje

Colapsar

Anuncio TOP B4 Mensaje (Mobile)

Colapsar

Anuncio

Colapsar
No hay anuncio todavía.

Problema con contador ascendente/descendente

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Problema con contador ascendente/descendente

    Hola a todos tengo una consulta con un programita en arduino y es que tengo un codigo que con dos pulsadores tiene que sumar o restar según el botón que se pulse... es un contador ascendente/descendente pero al iniciar la simulación tengo que pulsar sumar y el mensaje me muestra 1 pero despues no suma más, hasta que apreto el botón de restar y hace el proceso normal desde ahÃ* y despues funciona correctamente pero el problema está cuando inicia el programa porque se queda como en un bucle y no entiendo el porque... ahÃ* pongo en codigo

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Código:
    // Pin de entrada del sensor fototransistor (negro)
    int Fototransistor = 7;   
    
    // Variable que registra el estado del sensor de entrada
    int ValorFototransistor = 0;
    
    // Variable que registra el numero de personas que pasaron por el sensor
    int Contadorpersonas = 0;
    
    // Pin de la conexion de LED rojo
    int LedRojo = 10;
    
    int Sensor = 6;
    int ValorSensor = 0;
    
    // Configuracion Pantalla LCD
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // pines para pantalla LCD
    
    void setup()
    {
      Serial.begin(9600);           
      pinMode(Fototransistor, INPUT);    
      pinMode(LedRojo, OUTPUT); 
      pinMode(Sensor, INPUT);
     
      // Informacion pantalla inicial
      lcd.begin(16, 2);
      lcd.setCursor(0,0);
      lcd.print("Contador: 0");
      lcd.setCursor(0,1);
    //  lcd.print("Ulibertadores");
    
    }
    
    void loop()
    {
      // Establecer la variable ValorFototransistor con el estado del sensor pin 7
      ValorFototransistor = digitalRead(Fototransistor);
      ValorSensor = digitalRead(Sensor);
    
      //Muestra toda la Informacion de los sensores en el monitor serie **** mostrar en la consola de arduino que esta sucediendo en el prog
    //  Serial.print("ValorFototransistor : ");
    //  Serial.println(ValorFototransistor);
    //  delay(100);
    
      // Comprobar si el estado del sensor de entrada ha cambiado
      if(ValorFototransistor!=1) // validación cuando el fototransistor deja de recibir luz del infrarojo
      {
        digitalWrite(LedRojo, LOW);
        Contadorpersonas=Contadorpersonas+1;
        
    //    Serial.print("Contador: ");
        Serial.println(Contadorpersonas);
        while(digitalRead(Fototransistor)!=1)
          {
          delay(100); 
    //      Serial.println ( "El Sensor se detuvo o esta siendo obstruido!"); // esta siendo obstruido por un objeto o el led rojo falló
          }
          // BORRAMOS TODA LA PANTALLA PARA ACTUALIZARLA CADA SEGUNDO
      lcd.clear();
       lcd.print("Contador: 0");
      lcd.setCursor(0,1);
      // Se Actualiza la pantalla LCD con el valor del contador
        lcd.setCursor(10,0);
        lcd.print(Contadorpersonas);
      }
    /*  else
        {
        digitalWrite(LedRojo, HIGH); // Cuando el Sensor recibe luz infraroja, El led se enciente
        }*/
    
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
        if(ValorSensor!=1) // validación cuando el fototransistor deja de recibir luz del infrarojo
      {
        digitalWrite(LedRojo, LOW);
        Contadorpersonas=Contadorpersonas-1;
        
    //    Serial.print("Contador: ");
      //  Serial.println(Contadorpersonas);  lo saqué
        while(digitalRead(Sensor)!=1)
          {
          delay(100); 
    //      Serial.println ( "El Sensor se detuvo o esta siendo obstruido!"); // esta siendo obstruido por un objeto o el led rojo falló
          }
          // BORRAMOS TODA LA PANTALLA PARA ACTUALIZARLA CADA SEGUNDO
      lcd.clear();
       lcd.print("Contador: 0");
      lcd.setCursor(0,1);
      // Se Actualiza la pantalla LCD con el valor del contador
        lcd.setCursor(10,0);
        lcd.print(Contadorpersonas);
      }
      else
        {
        digitalWrite(LedRojo, HIGH); // Cuando el Sensor recibe luz infraroja, El led se enciente
        }
        
    }

  • #2
    Hola,

    Te falta pasar las variables de bool a int antes de sumarlas o restarlas. Me parece no haber visto esa conversión.

    Comentario


    • #3
      hola gracias por tú ayuda, ya estan declaradas como integer al comienzo de todo así que todavia ando en la busqueda del problema
      Editado por última vez por gaston260; https://www.infoplc.net/foro/member/68273-gaston260 en 19 sep 18, 00:57:50.

      Comentario


      • #4
        Hay que convertir la variable bool a entera, o sino será siempre nula.
        Una sería con un if preguntando si la variable es TRUE y no se si funciona valor=int(variable), hay que probar.

        Saludos,

        Comentario


        • #5
          Hola gracias el problema es que en la simulación el pin de entrada del arduino no estaba ni en bajo ni el alto entonces se confundia! Resolví todo con un cambio en el hardware saludos!

          Comentario

          Anuncio Footer B3 Mensaje

          Colapsar

          Anuncio Footer B5 Mensaje (Mobile) 300x600

          Colapsar
          Trabajando...
          X