Contador de personas en doble sentido - Double counter people

Buenas todos, estoy programando dos sensores ultasonicos HC-SR04, uso dos porque quiero saber cuando una personas suba o baje, es decir, el sentido del flujo de personas. Mi pregunta es como seria el algoritmo para que funcione adecuadamente. Ya intente de varias formas (de como yo creo que funcionaria).

Si me podrian apoyar con la logica mas que nada, ya que despues tendre que programarlo con un PIC18F.

I´m programming with 2 ultrasonic sensors HC-SR04, I wanna know when someone gets in or out, I mean the flux. So I would like to know the algorithmic to do that. Just the logic is fine, I will use it to program a PIC18F after.

Make up your mind what language you are asking your question in. Moving to Spanish section.

Si me podrian apoyar con la logica mas que nada, ya que despues tendre que programarlo con un PIC18F.

Posteas en el foro en inglés y además hablas de usar un PIC18F en un foro de Arduino?
Por favor edita tu post y ponle OFF TOPIC porque si no usas Arduino simplemente no deberías consultar acá, pero si lo haces no hay problema en seguir.

Bueno en Arduino en muy fácil y supongo que en PIC también lo será.
Acá tenemos librerías para todo. NewPing library te resuelve la distancia de los dos sensores.
La lógica es muy simple
Llamemos Sensor1 y Sensor2 a tus ultrasónicos.
Tu solo estas interesado en la secuencia y es similar a cuando usas un encoder donde tienes dos optoacopladores que ven pulsos defasados. Aca lo mismo.
Si S1 supongamos que este en la posición mas alta.
S2 la baja
Si S1 se pone en ON seguido de S2 tendras alguien bajando
Si S2 se pone en ON seguido de S1 tendrás alguien subiendo.
No puedes detectar un cruce simultáneo de personas pero eso es hilar fino.
Tampoco puedes detectar un grupo de personas bajando. 2 personas abrazadas serán lo mismo que 1.
O un grupo de chicos subiendo lo mismo que 1 sola persona.

Todo no se puede!

lo que me explicas es algo mas o menos asi, no?
if(S1==1)
if(S2==1)
pasajeros++;
if(S2==1)
if(S1==1)
pasajeros--;
este algoritmo ya lo probe y no me funciono, tienes alguna otra idea?

Explicate! Que es lo que no funciona?
Si los separas muchos uno de otro no se producirán las situaciones S1 y S2 en ON o vice versa.
Sino solo tienes que almacenar los estados ocurridos.
una situación de personas descendiendo será

S1 00000001100000000
S2 00000000000110000

Con esto te muestro que tus sensores pueden detectar objetos en una secuencia pero no al mismo tiempo.
En este caso mi sugerencia o lo que posteaste como código a mi sugerencia no va a funcionar.

Pero como no lo explicaste yo me base en el caso mas simple.
Una alternativa es que acerques los sensores.
Otra alternativa es que vayas viendo si la secuencia de 0 y 1 se va cumpliendo como se espera.
Una máquina de estados sería conveniente para ello

Partes de 2 sensores en 0. Ya se que mides distancia pero para mi eso lo cambio a objeto detectado/no detectado.
Luego tienes dos casos 1 que S1 se ponga en 1 lo que te lleva a estado 2
Sigo con que S1 debe volver a 0 y S2 debe permanecer en 0
estado 3, S1 en 0 y S2 se pone en 1 asi que paso a estado 4
de nuevo S1 en 0 y S2 si sigue en 1 permanezco en 4
Ahora si S1 en 0 y S2 pasa a 0 entonces voy a estado 0 de nuevo porque es el mismo que el inicial y antes agrego un pasajero

Lo mismo analizo el otro caso.
Lo escribí rapidamente asi que espero este bien.
El 2do caso es similar pero para S2 y detectas pasajero--.

SURGENCIA 2:
Tengo otra idea.
Si mides el tiempo en que se detecta el objeto con un sensor y ese contador lo comparas con el tiempo en que se detecta el mismo objeto por el segundo sensor y ambos los terminas cuando el objeto termina de pasar, que ocurrirá? Que un TS1 será mayor al TS2 (Tiempo Sensor 1 o 2)
Asi detectas si va en uno u otro sentido.