const int ldr = A2;
const int trimmerPin = A0;   // Pin del trimmer
const int buttonPin = 2;     // Pin del pulsante
const int lightPin = 13;     // Pin della luce

unsigned long timerStart;    // Variabile per il tempo di inizio
unsigned long duration;      // Variabile per la durata
unsigned long sens;          // Sensibità sensore ldr
int lightState = LOW;        // Variabile per lo stato della luce

void setup() {
  Serial.begin(9600);
  pinMode(trimmerPin, INPUT);  
  pinMode(buttonPin, INPUT_PULLUP);  
  pinMode(ldr, INPUT_PULLUP); 
  pinMode(lightPin, OUTPUT);  
  timerStart = millis();      
}

void loop() {
  int trimmerValue = analogRead(trimmerPin);
  duration = map(trimmerValue, 0, 1023, 1000, 10000); //Mappiamo il valore del trimmer da 0 a 1023 a una durata compresa tra 1000 e 10000 millisecondi
  int sensValue = analogRead(ldr);
  sens = map(sensValue, 0, 1023, 10, 1000); 
  Serial.println(sens);
  if (digitalRead(buttonPin) == LOW && sens >= 500){  
    lightState = !lightState;
    digitalWrite(lightPin, lightState);
    timerStart = millis();
  }
  
  if ((millis() - timerStart >= duration) && (lightState == HIGH)) { 
    digitalWrite(lightPin, LOW);
    lightState = LOW;
  }
}