envoie t° toutes les 10 minutes (comment faire ???)

bonjour
etant debutant en code , je copie , j essaye de comprendre.
j ai un bout de programme qui marche super bien sous une carte arduino uno.
il s agit de mesurer une temperature toutes les dix minutes.
j essaye de faire la meme chose avec une carte mkr fox 1200 mais ca marche pas .
Sous arduino j utilisé le mot Delay , j ai vu que certain utilise sleeptime.
un peu d aide svp

#include <RTCZero.h>
#include <ArduinoLowPower.h>//011217
#include <SigFox.h>


#define SLEEPTIME 15 * 60 * 1000  // Set the delay to 15 minutes (15 min x 60 seconds x 1000 milliseconds)

 
typedef struct __attribute__ ((packed)) sigfox_message { // see http://www.catb.org/esr/structure-packing/#_structure_alignment_and_padding
  int16_t moduleTemperature; // 1 octet format 6009
  //int32_t moduleTemperature; //2 octet format 6009000
} SigfoxMessage;

// stub for message which will be sent
  SigfoxMessage msg;

//=================== UTILITIES ===================
  void  reboot() {
  NVIC_SystemReset();
  while (1);
}
// =================================================


void setup() {

  Serial.begin(115200);
  while (!Serial);

  if (!SigFox.begin()) {
    Serial.println("SigFox error, rebooting");
    reboot();
}

  delay(100); // Wait at least 30ms after first configuration

  // Enable debug prints and LED indication
  SigFox.debug(); //il faut enlever ca car led orange n arrete pas de clignoter
}  
void loop() {
  // Read and convert the module temperature
    msg.moduleTemperature = (int16_t) (SigFox.internalTemperature()* 100.0); 
  //msg.moduleTemperature = (int32_t) (SigFox.internalTemperature()* 100.0); // température 1/100th of degrees
  // Serial.print("Internal temp: ");
  Serial.print(msg.moduleTemperature, HEX); // display what we will send in Hexadecimal
  //Serial.print(" ");
  // Serial.print(msg.moduleTemperature); // display what we will send in Decimal
  //Serial.println(" x100 deg C)");

  // Clears all pending interrupts
  SigFox.status();
  delay(1);

  // Send the data
  SigFox.beginPacket();
  SigFox.write((uint8_t*)&msg, sizeof(SigfoxMessage));

 // Serial.print("Status: ");
  Serial.println(SigFox.endPacket());//011217
 // delay(10000);
  SigFox.end();

  //Sleep for 15 minutes
      LowPower.sleep(SLEEPTIME);
   }
#define SLEEPTIME 15 * 60 * 1000

Sur un UNO ça ne va pas marcher avec delay()...
Il faut rajouter ul après 1000ul (ou un des autres pour forcer le calcul en unsigned long et mettre des parenthèses tant que vous y êtes) Sinon le calcul se fait en entier 16bits et vous débordez -

Sur le mkrfox j’ai pas testé il se peut que ce soit fait en 32 bits donc ça passerait (essayez d’imprimer SLEEPTIME pour voir)

il faudrait lire ce qu’attend la fonction sleep de la librairie ArduinoLowPower.h => Utiliser un const unsigned long serait sans doute plus simple

Si vous n’avez pas de problèmes d’alimentation. Vous pouvez utiliser une bête technique comme blink without delay pour attendre les 15 min (votre code dit 15, pas 10)