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