Probleme reception NRF24L01

j'ai 2 nrf24l01 qui font une liaison entre 2 arduino nano.
L'emetteur envoi une valeur A et une valeur B.

Le récepteur reçoit la valeur A, l'affiche et la valeur B et l'affiche.

Tout marche si je n'active pas la réception de la 2eme valeur.
// radio.read(&vitesseventkmh, sizeof(float));

Si j'active la réception de la 2eme valeur, tout le programme plante et il n'y a plus aucune réception.
radio.read(&vitesseventkmh, sizeof(float));

En gros je fais:
radio.read(&valeur_A, sizeof(float));
radio.read(&valeur_B, sizeof(float));

est ce que c'est la bonne méthode? ou faut il définir autre chose?

Merci !!

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); //l adresse 0x27 est a changé en fonction de votre écrant

RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
float temp ;
float vitesseventkmh = 0;
float last_temp = 0;

void setup(void)
{
// Serial.begin(115200);

lcd.begin();

lcd.backlight();
lcd.clear();

timeRef = millis(); // initialisation de la référence du comptage

radio.begin();
radio.setPALevel(RF24_PA_MAX);
radio.openReadingPipe(1, pipe);
radio.startListening();

}

void loop(void)
{

if (radio.available())
{
timeRef = millis(); //raz de la var quand le prog passe dans le if
last_temp = temp;
radio.read(&temp, sizeof(float));

// radio.read(&vitesseventkmh, sizeof(float));

Serial.print("recept Temperature : ");
Serial.println(temp);
Serial.print("recept vitesseventkmh : ");
Serial.println(vitesseventkmh);

lcd.setCursor(6, 0);
lcd.print(temp);

lcd.setCursor(8,1);
lcd.print(vent);

delay(1000);
}

}

Bonsoir,

Si tu as plusieurs données à transmettre, tu crées un tableau contenant tes données, tu envoies le tableau. A la réception, tu créés un tableau de même dimension dans lequel tu reçois tes données.
Ensuite tu lis la première valeur, puis la deuxième.

Lacuzon:
Bonsoir,

Si tu as plusieurs données à transmettre, tu crées un tableau contenant tes données, tu envoies le tableau. A la réception, tu créés un tableau de même dimension dans lequel tu reçois tes données.
Ensuite tu lis la première valeur, puis la deuxième.

ok oui! aurais tu un exemple? j'avoue, je suis une quiche en tableau!

dans ton sketch d'envoi, si tu as par exemple deux données, une température et une vitesse, tu crées dans l'entête de ton fichier un tableau de type :

float dataE[2];

si tu as deux données.

Ensuite, tu remplis ton tableau avec tes deux données :

dataE[0] = temp;
dataE[1] = vitesse;

ensuite tu procèdes à l'envoi de ton tableau avec la ligne de commande :

radio.write(dataE, sizeof(dataE));// envoi trame info

Dans ton sketch de réception tu crées un tableau de dimension 2, par exemple :

float dataR[2];

et tu lis les données qui arrivent :

radio.read(dataR, sizeof(dataR)); // lit les trames envoyées

puis tu extrais tes deux données de ton tableau :

temp = dataR[0];
vitesse = dataR[1];

en ayant bien sûr défini les deux variables temp et vitesse en préambule.

ton programme bloque car tu lances deux lectures sur le même pipe. Le mieux est donc de mettre toutes les données dans un seul tableau qui lui sera transmis sans problème.

a plus