อยากหน่วงเวลาโดยไม่ใช้ Delay ในเงื่อนไข if ครับ

เงื่อนไขคือให้ Sensor ทำงานเป็น HIGH แล้วอยากหน่วง LED (HIGH) 5 Sec โดยไม่ใช้ Delay ครับ

#define proxy 2
#define ledPin 9
int val = 0;

void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin, OUTPUT);
  pinMode(proxy, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  prox();
}

void prox(){
  val = digitalRead(proxy); // read input value
static unsigned long timer = millis();
const unsigned long period = 5000;
Serial.println(val);
Serial.println(timer);

if (val == LOW){
    digitalWrite(ledPin, LOW);
//    Serial.println("หลอดใกล้หมด");
  }
  
  if(val == HIGH && millis() - timer >= period){
    digitalWrite(ledPin,HIGH);
    Serial.print("มีหลอด");
    timer = millis();
  }
}

ขอทราบเหตุผลหน่อยครับ