Problema Sensore Infrarosso

Salve, ho un problema. Ho realizzato un parcheggio meccanizzato e ho due sensori a infrarossi di prossimità, uno per l’ingresso e uno per l’uscita. Ho impostato che possono entrare nel parcheggio attraverso il sensore di entrata solamente 10 macchine (<=10) ma in realtà così non accade perché il valore non riporta: alle volte si blocca con 5 e alle volte si blocca con 6. Da cosa può dipendere?

Trad:

#include <Servo.h>
Servo motore;
//Pin
const int infrarossoIngresso = 13;
const int infrarossoUscita = 12;
const int ledVerde = 3;
const int ledRosso = 4;
const int ledGiallo = 5;
const int fotoresistenza = A5;
 
//Variabili
int posizioneServo = 0;
int varIngresso = 0;
int varUscita = 0;
int contatorePosti = 0;
int varLuminosita = 0;
int stato = 0;
 
void setup()
{
 Serial.begin(9600);
  pinMode(infrarossoIngresso, INPUT);
  pinMode(infrarossoUscita, INPUT);
  pinMode(ledVerde, OUTPUT);
  pinMode(ledRosso, OUTPUT);
  pinMode(ledGiallo, OUTPUT);
  pinMode(fotoresistenza, INPUT);
 
  motore.attach(2);
}
 
void loop ()
{
   varIngresso = digitalRead(infrarossoIngresso);
   varUscita = digitalRead(infrarossoUscita);
   varLuminosita = analogRead(fotoresistenza);
   if(varIngresso == HIGH && varUscita == HIGH)
   {
    posizioneServo = 15;
    delay(15);
    motore.write(posizioneServo);
    delay(15);
    }
 
   if(varIngresso == LOW && varUscita == HIGH && contatorePosti <= 5)
   {
    stato = 1;
    Serial.println(contatorePosti);
    posizioneServo = 90;
    delay(1000);
    motore.write(posizioneServo);
    delay(15);
   }
 
   if(varIngresso == HIGH && varUscita == LOW)
   {
    stato = 2;
    posizioneServo = 90;
    delay(1000);
    motore.write(posizioneServo);
    delay(15);
   }
  if(posizioneServo < 85)
  {
    digitalWrite(ledVerde, LOW);
    digitalWrite(ledRosso, HIGH);
  }
  else {
    if(stato == 1)
  {
    contatorePosti++;
    stato = 0;
  }
  if(stato == 2)
  {
    contatorePosti--;
    stato = 0;
  }
    digitalWrite(ledRosso, LOW);
    digitalWrite(ledVerde, HIGH);
  }
   
  if(varLuminosita > 900)
  {
    digitalWrite(ledGiallo, HIGH);
  }
  else {
    digitalWrite(ledGiallo, LOW);
  }
 
}

Ciao, prima che ti “sgridi” un mod, potresti per cortesia presentarti nell’apposito thread come da regolamento ? … grazie :wink:

Inoltre, come c’e’ scritto piuttosto chiaramente, in questa sezione i post non si possono aprire … non so se un mod puo spostartelo, vediamo il primo che passa …