Problema invio sms con GSM SHIELD

lol, non sono i controlli ad usare la RAM, ma le variabili (se però per ogni controllo hai messo una stringa... piuttosto fai una funzione e chiamala spesso). Dobbiamo tagliare un poò di grasso dalla tuo codice, il problema è che il grosso sta DENTRO le librerie..

dovresti cercare di capire quale ti occupa tuttoquello spazio. intantopuoi recuperare un pò metterndo tutte le stringhe dentro la F(), che le salva in FLASH invece che in RAM

per esempio, invece che scrivere sempre

Serial.print("freeMemory()=");
    Serial.println(freeMemory());

puoi dichiarare char[] strFree= "freeMemory()="; e poi

Serial.print(strFree);
    Serial.println(freeMemory());