Probleme pour envoyer 2 donnés par NRF24L01

Bonjour,

Depuis quelques jours j’essaie en vain de transférer 2 données (celles d’un bête joystick) grâce au modules NRF24L01.

J’arrive a envoyer seulement une donné du joystick mais pour la deuxième ça reste impossible…
J’utilise la librairie NRFLITE, je n’y suis pas arrivé avec les autres non plus…

SI quelqu’un pourrait m’aider je lui en serait très reconnaissant merci a l’avance

Je vous joint les codes en dessous, ils ne sont vraiment pas propre je sais mais c’est juste pour des tests pour commencer un projet, Merci encore :confused:

RECEIVER :

#include <SPI.h>
#include <NRFLite.h>

const static uint8_t RADIO_ID = 0; // Numéro d’indentification de notre module récepteur
const static uint8_t PIN_RADIO_CE = 10; //déclaration du pin CE
const static uint8_t PIN_RADIO_CSN = 9;//déclaration du pin CSN

NRFLite _radio; //Déclaration du module NRF

uint32_t Valeur;//variable Valeur codée sur 32 bit
uint32_t Valeur1;

void setup()
{
Serial.begin(115200);//On ouvre la laison série avec le PC à 115200 baud

_radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN);

}

void loop()
{
while (_radio.hasData())//Tant que le module NRF a des données
{
_radio.readData(&Valeur);
// lecture des nouvelles données
_radio.readData(&Valeur1);

}
// Serial.println(Valeur);

int avant = Valeur;
int vitesseavant = map(avant,499,0,0,255); ← ca on s’en fou un peu :slight_smile:
int vitessearriere =map(avant,501,1023,0,255);
Serial.println(avant);

int cote = Valeur1;
int vitessedroite = map(cote,535,1023,0,255);

//Serial.println(vitessedroite);

}

TRANSMETTEUR

#include <SPI.h>
#include <NRFLite.h>

const static uint8_t RADIO_ID = 1; // Numéro d’indentification de notre module émetteur
const static uint8_t DESTINATION_RADIO_ID = 0; // Numéro d’identification du module récepteur (A qui notre émetteur transmet)
const static uint8_t PIN_RADIO_CE = 10;//déclaration du pin CE
const static uint8_t PIN_RADIO_CSN = 9;//déclaration du pin CSN

uint32_t Valeur;//variable qui contient la valeur transmise
uint32_t Valeur1;
int joy1 = A0;
int joy2 = A1;
NRFLite _radio; //Déclaration du module NRF

void setup()
{
Serial.begin(115200);//On ouvre la laison série avec le PC à 115200 baud

_radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN);

}

void loop()
{
Valeur=analogRead(joy1);//lecture de la valeur du potentiometre
Serial.println(Valeur);//Affiche la valeur envoyée

Valeur1 = analogRead(joy2);
//Serial.println(Valeur1);

_radio.send(DESTINATION_RADIO_ID, &Valeur, sizeof(Valeur));
_radio.send(DESTINATION_RADIO_ID, &Valeur1, sizeof(Valeur1));
delay(10);//pause de 10 milli secondes
}

Bonjour,

Mets ton code entre balises de code.

Tu mets tes deux valeurs dans une structure et tu envois/reçois cette structure

struct SValeurs
{
 int v1;
 int v2;
};

SValeurs valeurs;

MErci pour votre réponse,

J’ai chercher encore un peu et effectivement j’ai remarquer cette erreur, j’ai donc créé 2 structures pour 2 radiopacket et pourtant, toujours le même problème…

Désolé pour les codes c’est mon premier post sur ce forum je vais essayer de les mettres comme vous :slight_smile:
Je sais pas si ca fonctionnera désolé a l’avance

TRANSMETTEUR

#include <SPI.h>
#include <NRFLite.h>
int joy1 = A0;
int joy2 = A1;
const static uint8_t RADIO_ID = 1;             // Numéro d'indentification de notre module émetteur
const static uint8_t DESTINATION_RADIO_ID = 0; // Numéro d'identification du module récepteur (A qui notre émetteur transmet)
const static uint8_t PIN_RADIO_CE = 10;//déclaration du pin CE
const static uint8_t PIN_RADIO_CSN = 9;//déclaration du pin CSN


struct RadioPacket1
{
    uint32_t Valeur;
   
};

struct RadioPacket2
{
    uint32_t Valeur;
    
};

NRFLite _radio;
RadioPacket1 _radioData1;
RadioPacket2 _radioData2;




void setup()
{
    Serial.begin(115200);//On ouvre la laison série avec le PC à 115200 baud

       
    _radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN);
    
}

void loop()
{   

    _radioData1.Valeur = analogRead(joy1);
   
    _radio.send(DESTINATION_RADIO_ID, &_radioData1, sizeof(_radioData1));
    
   _radioData2.Valeur= analogRead(joy2);

    _radio.send(DESTINATION_RADIO_ID, &_radioData2, sizeof(_radioData2));
    
    delay(10);//pause de 10 milli secondes
}

RECVEVEUR

#include <SPI.h>
#include <NRFLite.h>




const static uint8_t RADIO_ID = 0;       // Numéro d'indentification de notre module récepteur
const static uint8_t PIN_RADIO_CE = 10; //déclaration du pin CE
const static uint8_t PIN_RADIO_CSN = 9;//déclaration du pin CSN


struct RadioPacket1
{
    uint32_t Valeur;
 
};

struct RadioPacket2
{
    uint32_t Valeur;
    
};

NRFLite _radio;
RadioPacket1 _radioData1;
RadioPacket2 _radioData2;

void setup()
{
    Serial.begin(115200);//On ouvre la laison série avec le PC à 115200 baud



    _radio.init(RADIO_ID, PIN_RADIO_CE, PIN_RADIO_CSN);
    

}

void loop()
{
    while (_radio.hasData())//Tant que le module NRF a des données
    {
        _radio.readData(&_radioData1);
        // lecture des nouvelles données 
       _radio.readData(&_radioData2);
     

    }      
    
  
   Serial.println(_radioData1.Valeur);

  // Serial.println(_radioData2.Valeur);
/*
  int avant = Valeur;
  int vitesseavant =  map(avant,499,0,0,255);
  int vitessearriere =map(avant,501,1023,0,255);
 Serial.println(avant);

  int cote = Valeur1;
  int vitessedroite = map(cote,535,1023,0,255);

  //Serial.println(vitessedroite);*/
      
}

Il te faut une seule structure qui contient les deux valeurs -> tu fais un seul envoi et une seule réception.

J'avais mal compris excusez moi

Bah voilà c'est résolu je viendrais + souvent sur ce forum, Merci encore et bonne soirée