Problema di spazio con ethernet shield e micro SD

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:

  1. const byte button = 7;
  2. Leva quel while(!Serial){ ; } serve solo per la Leonardo
  3. 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.
  4. ma che ti frega di sapere che tipo di SD è stata inserita ? mi pare un pezzo di codice inutile.