Endendido leds en función de entrada digital

Hola

Estoy tratando de simular la pulsación (2 veces) de un botón en función de la detección de 2 entradas digitales. He pensado simularlo usando 2 leds para ver si funciona correctamente.

El problema que tengo es que no consigo que solo haga la pulsación 2 veces y yo veo el bucle bien, creo que será un tontería pero no caigo en la cuenta.

Os agradecería mucho un poco de luz.

const int OBJETO_DETECTADO=2;
const int MARCHA_ATRAS=3;
const int PULSACION=4;
int ESTADO_VPS;
int ESTADO_CAMARA;


void VPS_ON() // VPS activado con un objeto detectado
{
  for (int i = 0; i<=2; i++)
  {
  // Doble pusalción del botón
  digitalWrite (4, HIGH); 
  delay (500); // Espera 0,5 segundos
  digitalWrite (4, LOW);
  delay (500); // Espera 0,5 segundos
  }  
}

void VPS_OFF() // VPS NO activado 
{
  digitalWrite (4, LOW); // NO HACER NADA
}

void setup() 
{
pinMode(OBJETO_DETECTADO,INPUT);
pinMode(MARCHA_ATRAS,INPUT);
pinMode(PULSACION,OUTPUT);
}

void loop() 

{
  ESTADO_VPS = digitalRead(OBJETO_DETECTADO);
  ESTADO_CAMARA = digitalRead(MARCHA_ATRAS);

  if (ESTADO_VPS == HIGH && ESTADO_CAMARA == HIGH) 
  { 
    VPS_ON(); // VPS Activo, doble pusación
  } 
  else if (ESTADO_VPS == LOW && ESTADO_CAMARA == HIGH)
  { 
    VPS_OFF(); // VPS NO activado,NO HACER NADA 
  } 
}

Buen dia, tu código esta haciendo lo que le pides, mientras vps y camara están en alto se llama a la función VPS_ON, entonces la función se estará repitiendo hasta que la condición deje de cumplirse. Creo que estas confundid@ en el uso del for()
Das muy poca información para entender correctamente como funcionan tus sensores, y cuando quieres las 2 pulsaciones pero, partiendo del código que tienes hice unas modificaciones, y así, cuando camara y vps están en alto solo hay 2 pulsaciones, pero si en el transcurso digamos de la primer pulsación alguno de los sensores cambia de estado ya no se cumplirán las 2 pulsaciones. Por eso es importante saber si los sensores solo cambian de estado momentáneamente o quedan en alto mucho tiempo, si quieres que siempre se cumplan los 2 pulsos, si algun sensor siempre está en alto, etc etc, debes de dar mas información y esta tiene que ser lo mas clara posible
Tambien ten en cuenta que estas usando delay y tu arduino no responderá ante cualquier cambio de estado de los sensores hasta que termine el delay

const byte OBJETO_DETECTADO=2;
const byte MARCHA_ATRAS=3;
const byte PULSACION=4;

byte conta=0;
bool ESTADO_VPS;
bool ESTADO_CAMARA;


void setup() 
{
pinMode(OBJETO_DETECTADO,INPUT);
pinMode(MARCHA_ATRAS,INPUT);
pinMode(PULSACION,OUTPUT);
}

void loop() 


{
  ESTADO_VPS = digitalRead(OBJETO_DETECTADO);
  ESTADO_CAMARA = digitalRead(MARCHA_ATRAS);

  if (ESTADO_VPS  && ESTADO_CAMARA && conta<2 ) {
       digitalWrite(PULSACION, HIGH);
        delay(500);
       digitalWrite(PULSACION, LOW);
        delay(500);
        conta++;
      }


  if (ESTADO_VPS == LOW && ESTADO_CAMARA == HIGH){ 
      
      digitalWrite(PULSACION, LOW);
      conta=0; 
  } 

}

Por lo pronto este es un punto de partida, pruebalo y comenta

Tienes que editar tu primer mensaje para que se entienda mejor. Elimina las contradicciones.

Aveigal:
He pensado simularlo usando 2 leds para ver si funciona correctamente.

No entiendo porque hablas de 2 LED y solo defines una salida.

void setup(){
   pinMode(OBJETO_DETECTADO, INPUT);
   pinMode(MARCHA_ATRAS, INPUT);
   pinMode(PULSACION, OUTPUT);          //Aqui va un LED y el otro ?
}

Aveigal:
Estoy tratando de simular la pulsación (2 veces) de un botón en función de la detección de 2 entradas digitales.

Por tu código supongo que pulsaras ambos botones al mismo tiempo ?

if (ESTADO_VPS == HIGH && ESTADO_CAMARA == HIGH){ 
   for (int i = 0; i<=2; i++)   {
      digitalWrite (4, HIGH); 
      delay (500);
      digitalWrite (4, LOW);
      delay (500);
   }  
}

Pero esa función demora 3 segundos y en ese tiempo no se ven las entradas.

Aveigal:
El problema que tengo es que no consigo que solo haga la pulsación 2 veces y yo veo el bucle bien, creo que será un tontería pero no caigo en la cuenta.

Claro se ejecuta 3 veces cuando i=0, i=1 e i=2, no entiendo la consulta.