Perchè le variabili le dichiari 2 volte, prima tutte nella setup e poi nella loop ?
mettile una volta sola in testa.
Poi segui consigli di @silente ed inoltre:
- const byte button = 7;
- Leva quel while(!Serial){ ; } serve solo per la Leonardo
- in tutti casi anche se usi F() sei su una piccola MCU, poca memoria, le "frasi" occupano spazio, abbrevia quei romanzi di frasi che hai scritto.
- ma che ti frega di sapere che tipo di SD è stata inserita ? mi pare un pezzo di codice inutile.