Conta persone entrate ed uscite da una stanza

Vi prego di aiutarmi perché sono disperato io vorrei realizzare un progetto di domotica su una stanza con arduino, praticamente grazie a due fotocellule poste all'entrata della stanza dovrei fare in modo che la prima fotocellula ogni volta che riceve riceve come segnale "0" aumenti il conto di persone entrate mentre invece quando riceve "0" la seconda fotocellula "esce una persona" questa diminuisce il conto di persone dentro la stanza; in modo che finché ci sarà una persona all'interno della stanza la luce o led rimane acceso mentre quando non ci sono persone dentro alla stanza la luce si spegne.
Ho cercato su internet uno sketch che potesse andarmi bene ma non l'ho trovato vi sarei grato se riusciste ad aiutarmi a trovare uno sketch adatto a ciò che voglio realizzare

GRAZIE

può essere utile ?

questo può suggerire qualche altra idea ? Specialmente nel video dal minuto 1:31

ciao
puoi studiare questo il pricipio è lo stesso, ho fatto delle modifiche per il mio utilizzo:

/*
Interrupt Example (the Encoder interrupts the processor). 
 Uses both Interrupt pins
 Read Quadrature Encoder
 * Connect Encoder to Pins encoder0PinA, encoder0PinB, and +5V.
 *
 *
 utilizzo di 2 interrupt
 Bit rates commonly supported include 75, 110, 300, 1200, 2400, 4800, 9600, 
 19200, 38400, 57600 and 115200 bit/s
 
 perde qualche impulso
 */

#define encoder0PinA 2
#define encoder0PinB 3

volatile unsigned int encoder0Pos = 0;
volatile unsigned int encoder0PosNew = 0;

void setup() {

  pinMode(encoder0PinA, INPUT); 
  pinMode(encoder0PinB, INPUT);
  
  digitalWrite(encoder0PinA,LOW);
  digitalWrite(encoder0PinB,LOW);
  
  // encoder pin on interrupt 0 (pin 2)

  attachInterrupt(0, doEncoderA, CHANGE);
  // encoder pin on interrupt 1 (pin 3)

  attachInterrupt(1, doEncoderB, CHANGE);  
  Serial.begin (115200);
}

void loop() 
{
  if(encoder0Pos!=encoder0PosNew)
  {
    Serial.println (encoder0Pos);  // use for debugging - remember to comment out  
    
  }
  encoder0PosNew=encoder0Pos;
  
}

void doEncoderA()
{

  if (digitalRead(encoder0PinA) == HIGH)// look for a low-to-high on channel A 
  { 

    if (digitalRead(encoder0PinB) == LOW)// check channel B to see which way encoder is turning
    {  
      encoder0Pos = encoder0Pos + 1;         // CW
    } 
    else 
    {
      encoder0Pos = encoder0Pos - 1;         // CCW
    }
  }
  else   // must be a high-to-low edge on channel A                                       
  { 

    if (digitalRead(encoder0PinB) == HIGH) // check channel B to see which way encoder is turning  
    {   
      encoder0Pos = encoder0Pos + 1;          // CW
    } 
    else 
    {
      encoder0Pos = encoder0Pos - 1;          // CCW
    }
  }
  //Serial.println (encoder0Pos);  // use for debugging - remember to comment out         

}

void doEncoderB()
{

  if (digitalRead(encoder0PinB) == HIGH) // look for a low-to-high on channel B
  {   

    if (digitalRead(encoder0PinA) == HIGH) // check channel A to see which way encoder is turning
    {  
      encoder0Pos = encoder0Pos + 1;         // CW
    } 
    else 
    {
      encoder0Pos = encoder0Pos - 1;         // CCW
    }
  }
  // Look for a high-to-low on channel B
  else 
  { 

    if (digitalRead(encoder0PinA) == LOW)// check channel B to see which way encoder is turning   
    {   
      encoder0Pos = encoder0Pos + 1;          // CW
    } 
    else 
    {
      encoder0Pos = encoder0Pos - 1;          // CCW
    }
  }
  //Serial.println (encoder0Pos);  // use for debugging - remember to comment out  
}

Ok adesso proverò grazie mille per avermi risposto