Secondo me, anche se hai commentato parecchio, è difficile leggere il codice perchè hai scritto i numeri dei pin come costanti ovunque.
Molto più semplice da leggere se dichiari delle costanti con dei nomi che richiamano l'utilizzo del pin.
Esempio il pin del piezo mi pare il 11. Meglio (anche a costo di aumentare il codice di 2 righe):
const byte pinPiezo=11;
...
pinMode(pinPiezo,OUTPUT);
digitalWrite(pinPiezo, LOW)
for (int ledPin = 3; ledPin <= 10; ledPin++)
...
Anche il pin del bottone. un bel const byte pinButton=2;
Anche const byte pinDP=3; nel codice usi pinDP e si capisce meglio dove lo "lampeggi"