Bonjour
j'ai pris sur internet un code pour commander des moteurs avec des nRF24L01, mais je ne comprends pas une partie du code. Si quelqu'un peut m'expliqué juste les parties en rouge.
PARTIE EMMETEUR
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
int calX;
int calY;
#define joystickPin1 0 //analog 0
#define joystickPin2 1 //analog 1
void setup(){
Serial.begin(9600);
Mirf.cePin = 9; // CE sur D9,
Mirf.csnPin = 10; // CSN sur D10
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // Initialise la bibliothèque
Mirf.channel = 0; // On va utiliser le canal 0 pour communiquer (128 canaux disponible, de 0 à 127)
Mirf.payload = 4; // ici il faut déclarer la taille du "payload" soit du message qu'on va transmettre, au max 32 octets
Mirf.config(); // Configure le module radio avec les valeurs de Mirf.channel et Mirf.payload. Active la partie réception du module et vide la mémoire tampon de réception.
Mirf.setTADDR((byte *)"nrf02"); // Le 1er module va envoyer ses info au 2eme module
Mirf.setRADDR((byte *)"nrf01"); // On définit ici l'adresse du 1er module
Serial.println("Le client est pret...");
calX = analogRead(joystickPin1); //valeur du joystick X dans le setup
calY = analogRead(joystickPin2); //valeur du joystick Y dans le setup
}
void loop(){
int numero1 = analogRead(joystickPin1) - calX ; //calibrage du joystick X
int numero2 = analogRead(joystickPin2) - calY; //calibrage du joystick Y
[color=red] // conversion dans un tableau de bytes (c 'est cette partie que je ne comprends pas)
byte data[Mirf.payload];
data[0] = (byte )((numero1 >> 8) & 0xff);
data[1] = (byte )(numero1 & 0xff);
data[2] = (byte )((numero2 >> 8) & 0xff);
data[3] = (byte )(numero2 & 0xff);
Mirf.send((byte *)&data); // On envoi les données (jusqu'à ici) [/color]
while(Mirf.isSending());
J'ai précisé quelle partie je ne comprenais pas, pareil pour la partie récepteur:
PARTIE RECEPTEUR:
if(!Mirf.isSending() && Mirf.dataReady())
{ // Si un message a été recu et qu'un autre n'est pas en cours d'emission
[color=red] Mirf.getData(data); // on récupére le message
// la suite de 4 bytes est convertie en 2 int ( c'est cette partie que je ne comprends pas)
numero1 = ((long )data[0]) << 8;
numero1 |= data[1];
numero2 = ((long )data[2]) << 8;
numero2 |= data[3];[/color]
//(jusqu'à ici)