Probleme programme xbee emetteur/recepteur

Bonjour.

Alors voilà, je veux contrôler mon robot à 4 roues avec mon joystick.
J'ai donc fais un programme émetteur et un programme récepteur. J'observe via le serial moniteur que le les données sont bien transmise et reçue par le xbee récepteur. Par contre, ceci est aléatoire, car ça marche que quelques fois, et quand je bouge le joystick, les roues ne réagissent pas..

Voici le code pour le programme émetteur:

int X,Y =0;
int val;

void setup(){
   Serial.begin(9600);
}
void loop(){
  
  X = Axe(A0);
  Y = Axe(A1);
   
 if (Y>70&&X>30&&X<70)
  val = 1;
 else if (Y<30&&X>30&&X<70)
  val = 2;
 else if (X>70&&Y>30&&Y<70)
  val = 3;
 else if (X<30&&Y>30&&Y<70)
  val = 4;
 else 
 val = 5;
 
 Serial.write(val);
 delay(500);
   
}

int Axe(int C){
  int result;
  result = analogRead(C);
  result = constrain(result, 400,620);
  result = map(result , 400,620,0,100);
  return result;
  
}

... et le programme récepteur:

#include <SoftwareSerial.h>
#include <XBee.h>
int val = 0;
int S1 = 13; 
int S2 = 12; 
int AV = 155;
int RE = 85;
int PM = 122;
SoftwareSerial xbee(3, 2);

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

void loop() {      
  if (Serial.available() > 0) {   //If there is data in the Serial Line
    int val = Serial.read(); //save data into integer variable dataByt
    
     Serial.print(val);
   }
     
   if(val == 1){
      analogWrite(S1,AV);
      analogWrite(S2,AV);
   }
   else if (val == 2){
      analogWrite(S1,RE);
      analogWrite(S2,RE);
   }
   else if (val == 3){
      analogWrite(S1,AV);
      analogWrite(S2,RE);
   }
   else if (val == 4) {
      analogWrite(S1,RE);
      analogWrite(S2,AV);
   }
   else if (val == 5){
      analogWrite(S1,PM);
      analogWrite(S2,PM);
   }
}

Voilà, est-ce que vous pensez pouvoir m'aider, peu être que les programmes ne sont pas synchro, car j'arrive à transmettre les données 1 fois sur 4, et j'aimerai que ça marche tout le temp, pour ensuite envisager d'obtenir une direction avec mon joystick et les roues.

Merci d'avance

Bonjour,

Je te laisse méditer sur la notion de "masquage de variable" :

int val = 0;
// ...
int val = Serial.read(); //save data into integer variable dataByt

Pose toi la question : "sur quel variable "val" je fait mes if ?"
Tu auras une surprise en trouvant la réponse, et accessoirement je pense que tu ment un peu en disant que ça marche actuellement, même "aléatoirement" :wink:

Sinon je te conseille aussi de te renseigner sur les "switch", cela rendrait ici ton code beaucoup plus propre et facile à lire/debug :wink: