Delay 5ms arduino uno R3 et PmodACL

Bonjour,
J’ai le mini projet avec un Accéléromètre et arduino. Je veux au minimu un échantillonnage à 200Hz, donc j’ai fait le code: delay(5). Mais cela ne fonctionne que pendant 10 secondes puis s’arrête automatiquement. Le problème est, la vitesse de lecture des données est-elle plus rapide que la vitesse d’écriture des données? alors il s’est arrêté soudainement? Comment les réparer?
Merci

#include <Wire.h> //including library for I2C communication
unsigned char address = 0x1D; //I2C address of the device
int full_scale = 2; //set full scale value +-2g/4g/8g/16g
void setup() {
  Serial.begin(9600); //serial initialization
  ACL_init();    //initializing the pmod
  delay(1000);
}
void loop() {
  float* data = ACL_read();
// Display the acceleration components in the serial monitor
  Serial.print(data[0]);
  Serial.print('\t'); // tabulation
  Serial.print(data[1]);
  Serial.print('\t');
  Serial.print(data[2]);
  Serial.println("\tg");
  delay(5); //5ms
  }
//initializes the pmod
void ACL_init(void) {
  Wire.begin(); // initialization of I2C bus
  
  //set power control register: wake up
  Wire.beginTransmission(address);
  Wire.write(0x2D);
  Wire.write(0x00);
  Wire.endTransmission();

  //set data format register: set full scale value according to full_scale variable
  Wire.beginTransmission(address);
  Wire.write(0x31);
  Wire.write(full_scale / 4 - full_scale / 16);
  Wire.endTransmission();

  //set power control register: data rate at 12.5Hz (40uA consumption)
  Wire.beginTransmission(address);
  Wire.write(0x2D);
  Wire.write(0x08);
  Wire.endTransmission();

  return;
}

//reads data
float* ACL_read(void) {
  float gains[] = {0.00376390, 0.00376009, 0.00349265}; //gains
  
  float* data = new float[3]; //array for raw data, and variable for data index
  int k = 0;
  
  //move address pointer to first address
  Wire.beginTransmission(address);
  Wire.write(0x32);
  Wire.endTransmission();

  //reconstruct data and convert it to mg
  Wire.requestFrom(address, (uint8_t)6);
  byte tmp[6];
  if (Wire.available()) {
    for(int i=0; i<3; i++) {
      tmp[i] = Wire.read();   //save data
      tmp[i + 3] = Wire.read();
      data[i] = gains[i] * (int16_t)(tmp[i] | (tmp[i + 3] << 8));  //reconstruct and convert 16 bit data
    }
  }
  
  return data;
}