จะหน่วงเวลาแต่ไม่ใช้ delay เขียนยังไงดีครับ

ผมใช้ PIR Motion Sensor ช่วยการเปิด-ปิดไฟอัตโนมัติ ครับ
เมื่อเซ็นเซอร์ตรวจเจอความเคลื่อนไหว ให้ไฟติด 10 วินาที แล้วดับ และค่อยกลับไปอ่านเซ็นเซอร์อีกครั้งครับ

ตัวอย่าง code ครับ

void pirsensor(){
    if(digitalRead(pirpin) == 1){
        digitalWrite(relaylightpin, LOW);

        delay(10000);

        digitalWrite(relaylightpin, HIGH);
    }else{
        digitalWrite(relaylightpin, HIGH);
    }
}

ผมจะเขียนยังไงโดยไม่ใช้ delay ครับ

ศึกษาจากกระทู้นี้ครับ