const float GAMMA = 0.7;
const float RL10 = 50;
const int LightError = 12;
const int DoorError = 13;
const int LimitSwitch = 8;
const int change_threshold = 250;
int buttonState = 0;
int lastButtonState = 0;
int startPressed = 0;
int endPressed = 0;
int idleTime = 0;
int SetupLux;
int analogValueOne;
int analogValueTwo;
int analogValueThr;
int analogValueFou;
int analogValueFiv;
int analogValue;
int analogArray[5];
float voltage[5];
float resistance[5];
static float lux[5];
void setup() {
  Serial.begin(9600);
  pinMode(LightError, OUTPUT);
  pinMode(DoorError, OUTPUT);
  pinMode(LimitSwitch, INPUT);
  pinMode(A0, INPUT);
  digitalWrite(LightError, LOW);
}
void loop() {
  buttonState = digitalRead(LimitSwitch);
  analogArray[0] = analogRead(A0);
  analogArray[1] = analogRead(A1);
  analogArray[2] = analogRead(A2);
  analogArray[3] = analogRead(A3);
  analogArray[4] = analogRead(A4);
  for (int i = 0; i <= 4; i++) {
    // analogValue = analogArray[i];
    voltage[i] = analogArray[i] / 1024. * 5;
    resistance[i] = 2000 * voltage[i] / (1 - voltage[i] / 5);
    lux[i] = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance[i], (1 / GAMMA));
    if (changed_significantly(lux[i], i)){
      SetupLux = SetupLux + 1;
      if (SetupLux >= 6 && buttonState != HIGH){
        Serial.println("Light Error");
        digitalWrite(LightError, HIGH);
      }
    }
    UpdateState();
    lastButtonState = buttonState;
    delay(100);
  }
}
bool changed_significantly(int value, int i) {
    static int old_value[5];
    static int list[5];
    list[i] = value;
    Serial.print("Sensor ");
    Serial.print(i);
    Serial.print(": ");
    Serial.println(list[i]);
    bool changed = abs(list[i] - old_value[i]) >= change_threshold || list[i] >= 1200 || list[i] < 0;
    if (changed) {
        old_value[i] = value;
    }
    return changed;
}
void UpdateState() {
  if (buttonState == HIGH) {
      startPressed = millis();
      idleTime = startPressed - endPressed;
      if (idleTime >= 10000) {
        digitalWrite(DoorError, HIGH);
        Serial.println("Door Error");
      }
    }
    else{
        endPressed = millis();
    }
    return true;
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
NOCOMNCVCCGNDINLED1PWRRelay Module
relay1:VCC
relay1:GND
relay1:IN
relay1:NC
relay1:COM
relay1:NO
NOCOMNCVCCGNDINLED1PWRRelay Module
relay2:VCC
relay2:GND
relay2:IN
relay2:NC
relay2:COM
relay2:NO
sw1:1
sw1:2
sw1:3
ldr1:VCC
ldr1:GND
ldr1:DO
ldr1:AO
led1:A
led1:C
led2:A
led2:C
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
ldr2:VCC
ldr2:GND
ldr2:DO
ldr2:AO
ldr3:VCC
ldr3:GND
ldr3:DO
ldr3:AO
ldr4:VCC
ldr4:GND
ldr4:DO
ldr4:AO
ldr5:VCC
ldr5:GND
ldr5:DO
ldr5:AO