Proyecto Domotica

Hola, estoy haciendo un proyecto de domotica que es el siguiente: Tengo las luces exteriores que a través de una LDR se enciende un LED, para las persianas tengo un Servo que a través de una LDR gira 180 grados y un sistema de alarma en el cual hay un sensor PIR y un led; cuando el sensor PIR detecta un movimiento el led se enciende.
A todo esto tengo un problema y es que cuando tengo tapada la LDR de las luces exteriores i se enciende el led de las luces exteriores el sistema de alarma, es decir, el sensor PIR no va y no enciende el led y viceversa.
No se si es problema del código o del circuito, aquí dejo el código:

// Incluir la libreria Servo.h
#include <Servo.h>

// Asignamos un pin a cada variable.
int pinLedLight = 13;
int pinLedAlarm = 8;
int pinServo = 12;
int pinLDRLight = A0;
int pinLDRServo = A1;
int pinPirSensor = 2;

int pirState = LOW;

// Variable de la clase Servo.
Servo servo;

// Umbral minimo para que se cambie el led.
int LDRThreshold = 20;

void setup() {

Serial.begin(9600);

// Indicamos el pin del servo a la variable de clase Servo.
servo.attach(pinServo);

//Indicamos si el pin es de salida o de entrada.
pinMode(pinLedLight, OUTPUT);
pinMode(pinLedAlarm, OUTPUT);
pinMode(pinPirSensor, INPUT);
pinMode(pinLDRLight, INPUT);
pinMode(pinLDRServo, INPUT);
}

// Bucle del programa
void loop() {
ldrFunction( analogRead(pinLDRLight) );
servoFunction( analogRead(pinLDRServo) );
alarmFunction ( digitalRead(pinPirSensor) );
}

/*Esta funcíon devuelve el valor boleano true o false
dependiendo del valor obtenido en el analoginput.
El parámetro threshold define la cantidad de señal que tiene
que recibir para devolver un valor u otro.
*/
boolean calculateOnOff(int val, int threshold) {
if (val >= threshold) {
return true;
} else if (val < threshold) {
return false;
}
}

int ldrStatus = false;
// Esta funcion se encarga de encender el led dependiendo de la luz
void ldrFunction(int val) {
// Aquí asignamos el valor obtenido con la funcion anterior en una variable.
boolean onOff = calculateOnOff(val, LDRThreshold);

//si es true se ejecuta esto.
if (onOff) {
digitalWrite(pinLedLight, LOW);
if (ldrStatus == false) {
Serial.println("Luces jardin encendido");
ldrStatus = true;
}
//si es false se ejecuta esto otro.
} else {
digitalWrite(pinLedLight, HIGH);
if (ldrStatus) {
Serial.println("Luces jardin apagado");
ldrStatus = false;
}
}
}

boolean servoStatus = false;
void servoFunction(int val) {
boolean onOff = calculateOnOff(val, LDRThreshold);
if (onOff) {
servo.write(90);
if (servoStatus == false) {
Serial.println("Persianas On");
servoStatus = true;
}
} else {
servo.write(0);
if (servoStatus) {
Serial.println("Persianas Off");
servoStatus = false;
}
}
}

void alarmFunction(int val) {
if (val == HIGH) {
digitalWrite(pinLedAlarm, HIGH);
if (pirState == LOW) {
Serial.println("Pir encendido");
pirState = HIGH;
}
} else {
digitalWrite(pinLedAlarm, LOW);
if (pirState == HIGH){
Serial.println("Pir apagado");
pirState = LOW;
}
}
}