3 modules sur SPI arduino Mega

Bonjour,
J'ai sur mon projet de station météo, trois modules branchés sur mes broches SPI de ma carte Mega :

  • Un NRF24L01+ pour réceptionner les données de deux sondes autonomes,
  • une carte Sd pour stocker ces données,
  • un module Ethernet Enc28j60 pour transmettre ces données à Thingspeak.

Pour sélectionner le module à activer je met à l'état bas la Pin CS de ce dernier.
Je veux que ma RéceptionDonnée() active, à l'écoute de mes capteurs tant que je n'écrit pas sur la carte ou n'envoie pas sur le net.

Si j'utilise un if (comme dans le code si dessous) ma fonction RéceptionDonnée() est ignorée, et si j'utilise un do while avec les mêmes conditions, ça ne fait que fonctionner que ma fonction RéceptionDonnée().

Je ne sais pas comment faire fonctionner le tout !!!!

void boucle_pricipale() {
  if (res > 220) {
    digitalWrite(ethCSpin, LOW);
    digitalWrite(SDCARD_CS_PIN, HIGH);
    digitalWrite(RF24_CS_PIN, HIGH);
    Initialise_Ethernet();
  }

  res = res + 1;
  digitalWrite(Led_internet , HIGH);
  delay(10);
  digitalWrite(Led_internet , LOW);


  ether.packetLoop(ether.packetReceive());
  Serial.print(res);
  Serial.print("   raz : ");
  Serial.println(raz_pluvio);

 // raz_pluvio = 0;
if (res != 100 && res != 150 && res != 200){
  ReceptionDonnees(); 
} 
 
  if (res == 100) {
    digitalWrite(SDCARD_CS_PIN, LOW);
    digitalWrite(RF24_CS_PIN, HIGH);
    digitalWrite(ethCSpin, HIGH);
    Ecriture_Carte_SD();
  }
  
  if (res == 150) {
    digitalWrite(ethCSpin, LOW);
    digitalWrite(SDCARD_CS_PIN, HIGH);
    digitalWrite(RF24_CS_PIN, HIGH);
    Envoi_Pluvio_jour_mois_annee();
  }

  if (res == 200) {
    digitalWrite(ethCSpin, LOW);
    digitalWrite(SDCARD_CS_PIN, HIGH);
    digitalWrite(RF24_CS_PIN, HIGH);
    Envoi_Temp_Hum_pression();
  }

  const char* reply = ether.tcpReply(session);
  const char* reply1 = ether.tcpReply(session1);
  if (reply1 != 0) {
    res = 170;
    Serial.println(F(" >>>REPLY recieved...."));
    Serial.println(reply1);
  }
  if (reply != 0) {
    res = 0;
    Serial.println(F(" >>>REPLY recieved...."));
    Serial.println(reply);
  }

  delay (1000);

}
void ReceptionDonnees()
{
  digitalWrite(RF24_CS_PIN, LOW);
  digitalWrite(SDCARD_CS_PIN, HIGH);
  digitalWrite(ethCSpin, HIGH);
  network.update();
  while ( network.available() )
  {
    Serial.println("message reception");

    RF24NetworkHeader fromheader;
    network.peek(fromheader);


    if (fromheader.from_node == node01) {
      n_sonde data;
      network.read(fromheader, &data, sizeof(data));
      Serial.println("message reçu");
      Serial.print("Temperature = ");
      Serial.print(data.temperature);
      Serial.println(" *C");
      Serial.print("Humidité = ");
      Serial.print(data.humidity);
      Serial.println(" %");
      Serial.print("Pression = ");
      Serial.print(data.pression);
      Serial.println(" HPa");
      Serial.print("Pluviométrie = ");
      Serial.print(data.pluvio);
      Serial.println(" mm");
    }
    if (fromheader.from_node == node02) {
      i_sonde1 data1;
      network.read(fromheader, &data1, sizeof(data1));
      Serial.println("message reçu");
      Serial.print("Temperature intérieure = ");
      Serial.print(data1.temp1);
      Serial.println(" *C");
      Serial.print("Humidité intérieure = ");
      Serial.print(data1.hum1);
      Serial.println(" %");

    }
  }

  // ----------calcul mini maxi ---------------------
  if (data.temperature > tempmax && data.temperature != 0)
  {
    tempmax = data.temperature;
  }
  if (data.temperature < tempmin && data.temperature != 0)
  {
    tempmin = data.temperature;
  }

}

Merci de votre aide

Je pense que si tu décrivais clairement ce que tu veux obtenir soit dans un petit texte (bien structuré), soit un dans graphe d'états, tu résoudrais plus vite ton problème et nous on comprendrait ce que tu veux faire.