mon nano semble redémarrer seul après le void loop [RESOLU]

Bonjour,

Je suis en train de réaliser un petit projet avec des sondes de températures reliées à un arduino nano et un NRF24L01 pour l’envoi des données. Chaque sonde est interrogée à tour de rôle par une base egalement un nano avec un NRF24L01 qui va récupérer les températures.

Mon problème se situe au niveau de la base en effet à la fin du void loop l’arduino semble redémarré, je m’en suis aperçu en mettant un Serial.println dans le void setup.J’ai ensuite ajouté un compteur qui incrémente à chaque boucle du loop est il reste à 1

Je ne pense pas que le problème vient de l’arduino j’ai essayé avec un autre et le problème est le même.
J’ai remarqué que si je mets un Serial.println après le delay à la fin du loop il n’affiche que la première lettre avant de redémarrer

//bibliothèque DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>

//bibliothèque NRF24l01+
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

#define ONE_WIRE_BUS 3 //pin data de connection DS18B20
#define DHTPIN 2     //pin data de connection DHT11
#define DHTTYPE DHT11   // type du capteur DHT: DHT 11


OneWire oneWire(ONE_WIRE_BUS);    // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
DallasTemperature sensors(&oneWire);  // Pass our oneWire reference to Dallas Temperature. 
RF24 radio(8,7); //initialisation des pin CE 8 ,CSN 7  du nrf24l01+
int cpt=0;

void setup() {

 Serial.begin(9600);                     // initialisation port serie
 
 Serial.println("initialisation de la radio...");
 radio.begin();                          // initialisation NRF24L01
 
 Serial.println("initialisation du DS18B20...");
 sensors.begin();                        // initialisation DS18B20

 Serial.println("configuration de la radio...");
 radio.setAutoAck(1);                    // Ensure autoACK is enabled
 radio.setRetries(15,15);                // Max delay between retries & number of retries
 radio.openWritingPipe('1Node');
 radio.openReadingPipe(1,'2Node');

 radio.startListening();
 Serial.println("capteur et recepteur operationnel...");
 
}

void loop(){
  cpt++;
  Serial.println(cpt);
  
  //lecture et envoi des données de temperature du recepteur (salle a manger) 
  sensors.requestTemperatures(); //demande de lecture de la temperature
  float temperature = sensors.getTempCByIndex(0); //enregistrement de la temperature lu
  char buff[50];
  String temp=dtostrf(temperature,5,2,buff);
  Serial.println("SaM&"+temp); 

  String liste_recepteur[0];
  liste_recepteur[0]="CH1";
  
  int i;
  for (i=0;i<= sizeof(liste_recepteur);i++){
    Serial.println(liste_recepteur[i]);
    String donnee ;
    donnee=demande_donnees("CH1");
    if (donnee!="-1") {
      Serial.println(liste_recepteur[i]+"&"+donnee); 
    }
  }
  delay(5000);
}

String demande_donnees( String recepteur){

  //generation du message de reveil du recepteur souhaite
  char reveil[4];
  reveil[0]=recepteur[0];
  reveil[1]=recepteur[1];
  reveil[2]=recepteur[2];
  reveil[3]=recepteur[3];
  
  //envoi du message
  radio.stopListening();
  
  radio.write( reveil, sizeof(reveil));
  //preparation à la reception des données
  radio.startListening();

  //attente de la reponse pendant 500ms
  unsigned long started_waiting_at = millis();
  bool timeout = false;
  while ( ! radio.available() && ! timeout ){
    if (millis() - started_waiting_at > 2000 )
      timeout = true;
  }
  
  if (!timeout) {
     return "-1";
  }
  else  {
    char buf[50];   // Variable for the received timestamp
    while(radio.available() ){
     radio.read( buf, sizeof(buf) );
     Serial.write("reception : ");
     Serial.println(buf);
    }
    return buf;
  }
}

La sortie dans la console donne cela

initialisation de la radio...
initialisation du DS18B20...
configuration de la radio...
capteur et recepteur operationnel...
1
SaM&20.31
CH1
CH1&
initialisation de la radio...
initialisation du DS18B20...
configuration de la radio...
capteur et recepteur operationnel...
1
SaM&20.31
CH1
CH1&
initialisation de la radio...
initialisation du DS18B20...
configuration de la radio...
capteur et recepteur operationnel...
1
SaM&20.31
CH1
CH1&

Je bloque totalement merci d’avance pour ceux qui aurait une idée.

Certaines erreurs ne sont pas détectables par le compilateur

par contre d’autres peuvent intervenir lors de l’exécution du scketch

Par exemple, si tu affecte des valeurs dans une variable de type tableau et que l’indice est hors le la plage du tableau il se produit un reset de la carte

ça pourrait bien arriver pour celle-ci

String liste_recepteur[0];

En effet il ne redémarre plus sans cesse, par-contre j'ai plein d'erreur après avoir retirer les strings et avoir tout changé en chaine de caractère mais ça je devrais pouvoir me débrouiller (j'ai jamais aimé les pointeur :D).

Merci beaucoup pour ton aide je pense que j'aurais pu continuer à chercher pendant un bon moment.