Ok,I tried hard,like real hard and this is what i've been able to do for now:
(Lot of code isn't used yet but it's gonna be after so don't mind it)
The Remote part:
//Software Remote Version 1.0
//Créé le 1 mars 2010
//Révisé le 2 mars 2010
//par Jérôme Gauthier (418-576-4641)
//
int tx=0; //declaration axe x branche sur analog 0
int ty=1; //declaration axe y branche sur analog 1
int tz=2; //declaration axe z branche sur analog 2
int tr=3; //declaration axe r branche sur analog 3
int xvalue=0; //variable qui maintient la valeur de l'axe x
int yvalue=0; //variable qui maintient la valeur de l'axe y
int zvalue=0; //variable qui maintient la valeur de l'axe z
int rvalue=0; //variable qui maintient la valeur de l'axe r
byte xdata; //variable byte qui contient la valeur de l'axe x
byte ydata; //variable byte qui contient la valeur de l'axe y
byte zdata; //variable byte qui contient la valeur de l'axe z
byte rdata; //variable byte qui contient la valeur de l'axe r
int Bmode=12; //declaration bouton mode branche sur digital 12
int Bready=11; //declaration bouton ready branche sur digital 11
int readyvalue=0; //variable qui maintient la valeur du bouton ready
int modevalue=0; //variable qui maintient la valeur du bouton mode
char buffer;
void setup()
{
pinMode(tx,INPUT); //declaration de l'entre x en mode entree
pinMode(ty,INPUT); //declaration de l'entre y en mode entree
pinMode(tz,INPUT); //declaration de l'entre z en mode entree
pinMode(tr,INPUT); //declaration de l'entre r en mode entree
pinMode(Bmode,INPUT); //declaration de l'entre bouton mode en mode entree
pinMode(Bready,INPUT); //declaration de l'entre bouton ready en mode entree
Serial.begin(9600); //Amorce la communication serielle
}
void loop()
{
lirecapteur(); //effectue la lecture de l'ensemble des capteurs
packeting(); //fonction de formatage et d'envoi des donnees
sending();
delay(10);
//incoming();
}
int lirecapteur()
{
xvalue=analogRead(tx); //lecture axe X
xvalue = map(xvalue, 0, 1023, 0, 255); // mise a niveau des valeurs de l'axe X
yvalue=analogRead(ty); //lecture axe Y
yvalue = map(yvalue, 0, 1023, 0, 255); // mise a niveau des valeurs de l'axe Y
zvalue=analogRead(tz); //lecture axe Z
zvalue = map(zvalue, 0, 1023, 0, 255); // mise a niveau des valeurs de l'axe Z
rvalue=analogRead(tr); //lecture axe R
rvalue = map(rvalue, 0, 1023, 0, 255); // mise a niveau des valeurs de l'axe R
}
int packeting()
{
xdata=byte(xvalue); //convertit la valeur x en byte pour le transfert
ydata=byte(yvalue); //convertit la valeur y en byte pour le transfert
zdata=byte(zvalue); //convertit la valeur z en byte pour le transfert
rdata=byte(rvalue); //convertit la valeur r en byte pour le transfert
}
int sending()
{
Serial.write('A');
Serial.write(xdata);
Serial.write('4');
Serial.write('5');
Serial.write('B');
/*
Serial.print("RRR"); //envoi le trigger de l'axe R
Serial.print(rvalue);
Serial.print("MMM"); //envoi le trigger du bouton Mode
Serial.print(modevalue);
if (readyvalue==HIGH)
{
Serial.print("RRR"); //envoi le trigger du bouton Ready si le bouton est enclanché
}
*/
}
int incoming()
{
if (Serial.available() > 0) {
buffer = Serial.read();
if (buffer == 65){
}
}
}
The receiving part:
//Software Tete Version 1.0
//Créé le 2 mars 2010
//Révisé le 2 mars 2010
//par Jérôme Gauthier (418-576-4641)
#include <Servo.h>
Servo servox;
Servo servoy;
Servo servoz;
int servoxval;
int servoyval;
int servozval;
int motorrval;
int buffer;
int x;
int y;
int z;
int counterx;
int countery;
int counterz;
int counterr;
byte bufferx;
byte buffery;
byte bufferz;
byte bufferr;
int pos;
int bob;
void setup()
{
servox.attach(9);
// servoy.attach(8);
// servoz.attach(7);
Serial.begin(9600);
}
void loop()
{
com();
//unpacketing();
//application();
Serial.println(bufferx);
Serial.println(buffery);
Serial.println(bufferz);
}
void com(){
int mstart=0;
int incombuffer=0;
int i=0;
while(mstart==0 && Serial.available()>0){
incombuffer=Serial.read();
if(incombuffer=65){
mstart=1;
}
}
while(Serial.available()>0 && mstart==1){
i++;
incombuffer=Serial.read();
if(i==1){
bufferx=incombuffer;
}
if(i==2){
buffery=incombuffer;
}
if(i==3){
bufferz=incombuffer;
}
if((incombuffer==66) && (i==4)){
i=0;
}
}
}
void unpacketing()
{
servoxval=int(bufferx);
servoxval=map(servoxval,0,255,0,165);
servoyval=int(buffery);
servoyval=map(servoyval,0,255,0,165);
servozval=int(bufferz);
servozval=map(servozval,0,255,0,165);
motorrval=int(bufferr);
motorrval=map(motorrval,0,255,-100,100);
}
void application()
{
// x=(servoX.read()+servoXval);
servox.write(servoxval);
Serial.println(servoxval);
//y=(servoY.read()+servoYval);
//servoY.write(y);
//z=(servoZ.read()+servoZval);
//servoZ.write(z);
}
it seem that even if i don't send the A,the 2,3,4 bytes are placed inside bufferx,y,z.so it's kinda weird.
any advices would be appreciated,thanks