Suma/Resta Variables

He estado indagando un poco el tema y por lo que he podido ver, añadiendo una función boolean y variables globales se puede conseguir zanjar la cosa pero me sigue dando un error, he probado solo con una LDR, la cosa es que en un inicio, no hay plazas vacantes, por lo tanto, el número de plazas es 0, al darle luz a la LDR y que ésta supere el umbral, me marca un "1" y me dice que la plaza se encuentra libre, pero al volver a un estado por debajo del umbral, me sigue marcando ese "1" cuando debería marcar un "0", no sé qué he hecho mal ,no sé si me explico, este el código que he pensado:

boolean EstadoActual;
int EstadoAnterior;

int Umbral = 512;
int Plazas;

int LDR = A0;
int Valor;

int LDR1 = A1;
int Valor1;


void setup() {
  Serial.begin(9600);
}


void loop() {
  Valor = analogRead(LDR);
  Serial.print("LDR: ");
  Serial.println(Valor);

  if (Valor >= Umbral) { //Libre
    EstadoActual = true;

    if (EstadoActual != EstadoAnterior) {
      Plazas = Plazas + 1;
      EstadoAnterior = EstadoActual;
      Serial.println("Plaza Libre");

    }
    else                  //Ocupada
    {
      EstadoActual = false;
      if (EstadoActual != EstadoAnterior) {
        Plazas = Plazas - 1;
        EstadoAnterior = EstadoActual;
        Serial.println("Plaza Ocupada");
      }
    }

  }
  Serial.print("Plazas:  ");
  Serial.println(Plazas);
  delay(5000);
}