Fermare un ciclo for.

Rieccomi,dunque ho aggiunto il codice riguardo la gestione degli sms della GSM SHIELD,come ho scritto in un altro post, ho preferito utilizzare i comandi AT piuttosto che la libreria completa GSM.h,la quale mi occupava un sacco di risorse inutilimente.
Ebbene,ho un problema. Lo sketch di esempio funziona bene,ma ho provato ad inserirlo nel mio progetto e non mi invia gli sms.
Lo sketch di esempio e' questo:

/*Note:This code is used for Arduino 1.0 or later*/
#include <SoftwareSerial.h>
SoftwareSerial Sim900Serial(2, 3);
void setup()
{
  Sim900Serial.begin(115200);               // the GPRS baud rate  
  delay(500);
  Sim900Serial.println("AT+IPR=19200");
  delay(500);
  Sim900Serial.begin(19200);               // the GPRS baud rate   
  delay(1000);
  Serial.begin(9600);               // the Hardware serial rate 
 Serial.println("Please type 's' to send  SMS"); 
}
void loop()
{   
   if (Serial.available())
    switch(Serial.read())
   {
     case 's':
       SendTextMessage();
       break;
    } 
   if (Sim900Serial.available())
    Serial.write(Sim900Serial.read());
}
void SendTextMessage()
{
  Sim900Serial.print("AT+CMGF=1\r");    //Sending the SMS in text mode
  delay(100);
  Sim900Serial.println("AT + CMGS = \"***********\"");//The target phone number
  delay(100);
  Sim900Serial.println("hello");//the content of the message
  delay(100);
  Sim900Serial.println((char)26);//the ASCII code of the ctrl+z is 26
  delay(100);
  Sim900Serial.println();

Mentre il mio codice e' questo:

#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
#include <SPI.h>
#include "ADXL335.h"
#include <SoftwareSerial.h>

SoftwareSerial Sim900Serial(2, 3);
ADXL335 accelerometer;

RTC_DS1307 RTC;

File Dati; // La variabile di tipo file che useremo per il log

const int chipSelect =10;

int i=0;
float ax,ay,az;

const int buttonPin = 7;     // the number of the pushbutton pin
const int ledPin =  13;      //  LED CHE INDICA CHE IL SENSORE DI PROSSIMITA' E' ATTIVO (VERDE)
const int ledSms= 5;  // LED IMPATTO  INVIO SMS (ROSSO) 

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

unsigned long time; // serve per misurare il tempo di esecuzione

void setup ()

{
  
  Sim900Serial.begin(115200);               // the GPRS baud rate  
  delay(500);
  
  Sim900Serial.println("AT+IPR=19200");
  delay(500);
  Sim900Serial.begin(19200);               // the GPRS baud rate   
 delay(1000);
  
  Serial.begin(115200);
  
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
  pinMode(ledSms, OUTPUT);
  
 
  Wire.begin(); // inizializziamo la libreria WIRE per usare
  RTC.begin(); //il Real Time clock basato su ds1307
  accelerometer.begin();
  
  if (! RTC.isrunning()) 
  
  {
    Serial.println("RTC NON STA FUNZIONANDO");
    
    //LA SEGUENTE ISTRUZIONE SERVE SOLO PER REGOLARE L'OROLOGIO.ATTIVARE SOLO SE NECESSARIO.
  //  RTC.adjust (DateTime(__DATE__, __TIME__)); //imposta ora e data
    }
    
    
    
  Serial.print("\nSto verificando la presenza della scheda..\n");
  pinMode(10, OUTPUT); // fa funzionare la sdlib
  
  if (!SD.begin(chipSelect))
  
  {
     Serial.println("SD card non trovata");
     return;
     
  }
 else 
   {
     Serial.println("Scheda inserita e funzionante");
     Serial.println();
    
   }
}
void loop ()

{
  
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);
  
  if (buttonState == HIGH) {
    // turn LED on:   IL LED VIENE ATTIVATO QUANDO SI PREME IL PULSANTE
    digitalWrite(ledPin, HIGH);
    
    i++;
    
  // MISURO IL TEMPO DI ESECUZIONE 
  Serial.print("Time: ");
  time = millis();
  //prints time since program started
  Serial.println(time);
  
  DateTime now = RTC.now(); // leggiamo l'ora
    accelerometer.getAcceleration(&ax,&ay,&az);
  
   Serial.print(ax,2);
   Serial.print("g");
   Serial.print(",");
   Serial.print(ay,2);
   Serial.print("g");
   Serial.print("\t");
   
   // ORA E DATA
   Serial.print(now.day(), DEC);
   Serial.print('/');
   Serial.print(now.month(), DEC);
   Serial.print('/');
   Serial.print(now.year(), DEC);
   Serial.print(' ');
   Serial.print(now.hour(), DEC);
   Serial.print(':');
   Serial.print(now.minute(), DEC);
   Serial.print(':');
   Serial.print(now.second(), DEC);
   Serial.print("\n");
   
   Dati = SD.open("datalog.txt", FILE_WRITE); // apriamo il file in scrittura
  
  if (Dati)
  {

  // SCRITTURA DEI DATI DEL SENSORE
   Dati.print(ax,2);
   Dati.print("g");
   Dati.print(",");
   Dati.print(ay,2);
   Dati.print("g");
   Dati.print("\t");
   
   // SCRITTURA ORA E DATA
   Dati.print(now.day(), DEC);
   Dati.print('/');
   Dati.print(now.month(), DEC);
   Dati.print('/');
   Dati.print(now.year(), DEC);
   Dati.print(' ');
   Dati.print(now.hour(), DEC);
   Dati.print(':');
   Dati.print(now.minute(), DEC);
   Dati.print(':');
   Dati.print(now.second(), DEC);
   Dati.println(); 
   
   Dati.close();     // chiudiamo e trasferiamo su SD
   Serial.print("Dati rilevati \t");
   
  }
  else
  {
    Serial.println("Errore nell'apertura di datalog.txt");
  } 
  
  Serial.println(time);
   
   // CONDIZIONE AX,AY >N
  
  if (ax>=1 || ay>=1) {         //se la collisione è forte
    
    if (i==5 ) {           //se la collisione forte dura da 50 loop
      digitalWrite(ledSms, HIGH);
      Serial.println ("Impatto avvenuto,sto inviando SMS");
       SendTextMessage();
      
      }
    }  
      else { //altrimenti no fare nulla, c'è una collisione, è forte, ma non abbiamo ancora raggiunto 50 loop consecuutivi, OPPURE li abbiamo supertati
      digitalWrite(ledSms, LOW);
       i=0;         //La collisione forte è finita o non c'è mai stata, assicurati di ricominciare a contare da 0 
           }
         
         }
             
        // Parentesi del IF PRINCIPALE
  else {
    // turn LED off:
    i=0;//collisione finita o non presente, assicurati di ricominicare a contare da 0
    
    // turn LED off:
    digitalWrite(ledPin, LOW);
    }
    delay (0);  // cadenza della scrittura dei dati
    
  }
  
 void SendTextMessage()
{
  Sim900Serial.print("AT+CMGF=1\r");    //Sending the SMS in text mode
  delay(100);
  Sim900Serial.println("AT + CMGS = \"123456789\"");//Qui inserisco il mio numero di cellulare
  delay(100);
  Sim900Serial.println("Impatto avvenuto");//Contenuto del messaggio
  delay(100);
  Sim900Serial.println((char)26);//the ASCII code of the ctrl+z is 26
  delay(100);
  Sim900Serial.println();
}

Il problema credo sia dovuto a questo pezzo di codice preso da quello originale che non ho inserito,in effetti nel mio caso non dovrei premere nessun tasto per poter inviare il messaggio,quindi ho ritenuto opportuno eliminarlo

if (Serial.available())
    switch(Serial.read())
   {
     case 's':
       SendTextMessage();
       break;
    } 
   if (Sim900Serial.available())

Cosa sbaglio?