Det var två kanske viktiga synpunkter, ( svårt att veta utan att ha mer information om ditt projekt )
millis() retunerar en "unsigned integer", 32 bitar, ungefär 4 miljarder millisekunder sedan slår den runt och börjar på noll,
finns det risk att du ska köra din arduino i mer än 49 dagar i sträck måste du ta hänsyn till det.
Om du gör en loop enligt mitt förslag kommer den att kolla status på ingången några tusen gånger i sekunden,
finns det risk för avbrott i signalen som är väldigt korta , och dessutom hamnar mitt emellan två avläsningar av ingången,
(alltså mindre än en tusendels sekund) så kommer det inte att upptäckas,
då måste du sätta upp avbrotts hantering, ISR, "Interupt Service Routine"
https://www.arduino.cc/en/Reference/AttachInterrupt