Digital Read molto lento nel rilevare il cambio di stato

a parte il dealy, ma nessun ha notato che nel loop()

if (Serial.available() > 0) {
balbla
}

ovvero, esegue i controllo SE E SOLO SE ci sono dati nella seriale?