Giusto una prima risposta "al volo", guardando il tuo codice la prima cosa che ti consiglio è cambiare la riga:
if ( millis() - lastBlink == 40) {
in:
if ( millis() - lastBlink >= 40) {
altrimenti se il loop() non becca esattamente i 40ms dopo l'ultimo blink, non blinka più.