void loop()
{
static unsigned long startTime = 0;
static boolean switchState = LOW;
if (digitalRead(switchPin) != switchState) {
startTime = millis();
switchState = digitalRead(switchPin);
}
int maxBrightness = map(analogRead(brightnessPot), 0, 1023, 0 255);
int maxSeconds = map(analogRead(timePot),0, 1023, 5*60, 25*60);
int elapsedSeconds = (millis() - startTime) / 1000;
if (switchState && elapsedSeconds < maxSeconds) {
// Getting brighter
analogWrite(outputPin, map(elapsedSeconds, 0, maxSeconds, 0, maxBrightness));
}
if (!switchState && elapsedSeconds < maxSeconds) {
// Getting dimmer
analogWrite(outputPin, map(elapsedSeconds, 0, maxSeconds, maxBrightness, 0));
}
}