Bon ben je m'auto aide. En essayant et à coup de débogage j'ai trouvé.
Je poste ce que je pense avoir compris:
#include <string.h> //j'utilise les librairies concernées.
#include <Servo.h>
Servo myservox; //mes servomoteurs.
Servo myservoy;
char data[9]={ //roborealm me renvoie 9 caractères au maximum, et de type "char" (par exemple: -156;-102)
0,0,0,0,0,0,0,0,0};
int incrx; //ensuite différentes variable que je vais utiliser...
int incry;
char *distancex;
char *distancey;
char *i;
int x;
int y;
int anglex = 90;
int angley = 90;
int k=0;
int sens=0;
void setup()//je mets en position initiale le pan/tilt.
{
Serial.begin(9600);
myservox.attach(53);
myservox.write(anglex);
delay(500);
myservoy.attach(50);
myservoy.write(angley);
}
void loop()
{
if(Serial.available()){ //verrification si roborealm envoie des octets
while (k<9){ //tant que j'ai pas tous les caractères
data[k] = Serial.read();//je lis ce qu'il y a dans le buffer.
k++; //et je place le caractère lu dans un data différent à chaque fois.
delay(3); // le delay est important sinon ca fait nimp..
}
distancex = strtok_r(data,";",&i); //je place ce qui est avant ";" dans mon "distancex". -156 si je reprends mon exemple.
distancey = strtok_r(NULL,";",&i); //je place ce qui est en dernier, juste après un ";" , dans distancey. -102 d'après mon exemple.
x = atoi(distancex); //je convertie ces valeurs en variable int pour pouvoir les utiliser.
y = atoi(distancey);
k=0; //je remets la variable qui change de data à zéro pour la prochaine lecture de la loop.
if(x<-159){ //et la c'est le programme qui pilote le pan/tilt... le plus important c'est ce qu'il y a au dessus.
//rien
}
else if (x>-159){
incrx = map(abs(x), 0, 120, 1, 5);
if(x < -10) {
anglex= anglex-incrx;
anglex=constrain(anglex, 0,180);
myservox.write(anglex);
}
incrx = map(abs(x), 0, 120, 1, 5);
if (x>10){
anglex=anglex+incrx;
anglex=constrain(anglex, 0, 180);
myservox.write(anglex);
{
}
}
}
if(y<-119){
//rien
}
else if (y>-119){
incry = map(abs(y), 0, 90, 1, 3);
if(y < -10) {
angley= angley+incry;
angley=constrain(angley, 0,180);
myservoy.write(angley);
}
incry = map(abs(y), 0, 90, 1, 3);
if (y>10){
angley=angley-incry;
angley=constrain(angley, 0, 180);
myservoy.write(angley);
{
}
}
}
}
}
Voila, si ca peut aider quelqu'un!
Le programme fonctionne impecable.