Pb transmission tableau NRF24L01

Bonjour,
Je tente d’envoyer un tableau de 4 valeurs via NRF24L01.
J’ait utilisé des bouts de code ici et là et tenté d’arranger à ma sauce.
Pour la partie emission :

#include <OneWire.h>
#include <DallasTemperature.h>
#include <SparkFunTSL2561.h>
#include <Wire.h>
#define ONE_WIRE_BUS 2

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

SFE_TSL2561 light;

boolean gain;     // Gain setting, 0 = X1, 1 = X16;
unsigned int ms;  // Integration ("shutter") time in milliseconds

int sensorPin = A0;
int sensorUV = 0;

int capteur[4];

void setup(void)

{
  Mirf.cePin = 8;
  Mirf.csnPin = 7;
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.channel = 1;
  Mirf.payload = sizeof(byte) * 4;
  Mirf.config();
  Mirf.setTADDR((byte *) "nrf02"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf01"); // Adresse de réception

  pinMode(3, INPUT_PULLUP);
  // start serial port
  Serial.begin(9600);
  sensors.begin();
  light.begin();
  unsigned char ID;
  gain = 0;
  unsigned char time = 2;
  light.setTiming(gain, time, ms);
  light.setPowerUp();
}

void loop(void)
{
  
  // Surveillance de la lampe a UV

  sensorUV = analogRead(sensorPin);
  //capteur[0] = sensorUV & 0xFF;
  capteur[0] = sensorUV;
  if (sensorUV < 100) {
    Serial.println("Verifier le fonctionnement de la lampe UV");
  }

  // Surveillance du niveau d eau

  int sensorVal = digitalRead(3);
  //capteur[1] = sensorVal & 0xFF;
  capteur[1] = sensorVal ;
  if (sensorVal == 0) {
    Serial.println("Attention : il manque de l eau");
  }

  // Affichage de la temperature

  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.print("Temperature: ");

  // Affichage de l ensoleillement

  Serial.print(sensors.getTempCByIndex(0));
  Serial.println(" degres");
  capteur[2] = (sensors.getTempCByIndex(0)) * 10;
  unsigned int data0, data1;
  if (light.getData(data0, data1))
  {
    double lux;    // Resulting lux value
    boolean good;  // True if neither sensor is saturated
    // Perform lux calculation:
    good = light.getLux(gain, ms, data0, data1, lux);
    // Print out the results:
    Serial.print(" Luminosite: ");
    Serial.print(lux);
    capteur[3] = lux  ;
    Serial.println(" Lux ");
  }
  for ( int i = 0 ; i < 4 ; i++ ) {
    Serial.println(capteur[i]);
  }
   Mirf.send((byte *) &capteur);
  while (Mirf.isSending()) {
    delay(5);
  }
  
  delay(10000);

}

et pour ma partie reception :

/**
 * Exemple de code pour la bibliothèque Mirf – Serveur d'envoi de tableau de valeurs
 */

#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI

void setup() {
  Serial.begin(9600);

  Mirf.cePin = 8; // Broche CE sur D9
  Mirf.csnPin = 7; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothéque

  Mirf.channel = 1; // Choix du cannal de communication (128 canaux disponible, de 0 à 127)
  Mirf.payload = sizeof(int) * 4; // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio

  Mirf.setTADDR((byte *) "nrf01"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf02"); // Adresse de réception

  Serial.println("Go !"); 
}

void loop() {
 int capteur[4];

  if(Mirf.dataReady()){
    Mirf.getData((byte *) &capteur); // Réception du paquet
    
    Serial.print("capteur[0]=");
    Serial.println(capteur[0]); // Affiche le message
    Serial.print("capteur[1]=");
    Serial.println(capteur[1]); 
    Serial.print("capteur[2]=");
    Serial.println(capteur[2]); 
    Serial.print("capteur[3]=");
    Serial.println(capteur[3]); 

      }
}

Pas d’erreurs de compilation… c’est dejà ça mais à la reception mes valeurs sont toujours à 0 !
Là, je séche… un piste, un coup de main serait bienvenue svp
Merci

Bonjour,

Il y a au moins deux erreurs
en émission

 Mirf.payload = sizeof(byte) * 4;

à remplacer par

 Mirf.payload = sizeof capteur;
  Mirf.send((byte *) &capteur);

à remplacer par

  Mirf.send((byte *) capteur);

en réception

   Mirf.getData((byte *) &capteur); // Réception du paquet

à remplacer par

   Mirf.getData((byte *) capteur); // Réception du paquet

Oui !!! Parfait...cela fonctionne ..... tu m'expliques stp ?

quand tu as un tableau: capteur[4], capteur représente l'adresse du tableau (puisqu'on peut l'indexer par capteur[1] par exemple), donc quand tu écris &capteur, tu prends l'adresse de l'adresse du tableau et non l'adresse du tableau.

merci beaucoup