Fermare un ciclo for.

Grazie a tutti per i preziosi consigli,ho usato il suggerimento di Iesto.Ho Inserito uno tasto switch al posto del sensore di prossimita',in quanto non ce l'ho ancora.Ad ogni modo,ho fatto cosi',quando il tasto e' premuto,il sensore di prossimita' va su ON e si attiva un LED.Inoltre ho anche inserito un led,che mi indica che si sta inviando l'sms. (ancora non ho implementato l'algoritmo,ma ho solo aggiunto un messaggio su seriale,che appunto si sta inviando l'sms). I miei dubbi sono:
Mettiamo che venga superata la soglia di impatto,allora verra' inviato un sms...bene,non vorrei che tutto il tempo che per esempio l'oggetto si trova fermo d'avanti al sensore,il sistema continui a mandare sms!!! .Forse sono io che non comprendo bene il funzionamento dell' accelerometro,cioe' una volta che avviene l'impatto,il valore captato da questo sensore dovrebbe resettarsi?Io vorrei che una volta avvenuto l'impatto ad un certa soglia,viene inviato l'sms (solo al momento dell'impatto) e non, se per esempio l'oggetto e' fermo davanti al sensore di prossimita'.Poi fatto questo,il sistema dovrebbe resettarsi.E cominciare daccapo cioe:
Capta un oggetto in avvicinamento tramite il sensore di prossimita'.
Comincia a registrare i dati su SD
Se l'oggetto si scontra col l'accelerometro ad un certa velocita' manda un sms (ma solo quando impatta)
Il sensore di prossimita' si resetta. Il sistema va in stan by,

Ecco lo sketch se puo' essere utile:

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

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 ()

{
  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");
      
      
      }
    }  
      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
    
  }