al final lo he solucionado haciendo que compruebe los flancos de subida y bajada, os pongo el código por si alguna vez le hace falta a alguien xD
PD: Grácias igual por tu rápida respuesta
int objectCount = 0; //cuenta de objetos
bool currentState = 1;
int light_sensitivity = 700; //sensibilidad ldr
int countTrigger = light_sensitivity + 75; //flanco de subida
int resetTrigger = light_sensitivity + 60; //flanco de bajada
void checkldr()
{
int LDRValue = 0;
//reducimos el ruido comprobando varias veces
for (int i = 0; i<10; i++){
delay(1);
LDRValue += analogRead(ldr);
}
LDRValue = LDRValue / 10;
if (currentState == 1) //activamos la espera de un objeto
{
if (LDRValue >= countTrigger){
currentState = 0; //paramos la espera
objectCount++; //incrementamos la cuenta
}
}
else
{
if (LDRValue <= resetTrigger){
currentState = 1; //volvemos a esperar un objeto
}
}
}
y aquí lo podéis ver funcionando: