Go Down

Topic: Arduino et un xbee (Read 1 time) previous topic - next topic

Bonjour,

Alors voila je vous expose mon problème, alors je réalise un robot. Et donc j'utilise un Xbee qui ce trouve sur le robot et qui m'envoi des grandeur physique tel que le courant...  Et donc voila avec le Xbee sur le robot qui envoi donc une chaîne d'information que j'ai prédéfini qui est "XBAIEAOPAKDNEA" donc chaque combinaison de 2 caractères correspond a une information bien précise. Alors quand je reçoit cette chaine d'information grâce au second Xbee,qui est sur un Arduino, mais je reçois cette chaîne d'information en entière et j'aimerai donc savoir comment je pourrais découpé cette chaîne de tel façon a ce que il me stocke les 2 premier caractère comme étant la tension, puis les 2 suivant comment étant par exemple une distance

Tirmit

Salut,
bon, je ne suis pas expert mais je te donne ça :
Code: [Select]
char Str[ ] = "arduino";

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

void loop() {
for(int i; i<7; i++){
  char lettre1 = Str[i];
  char lettre2 = Str[i+1];
  if (lettre1 == 'a' && lettre2 == 'r') {
   
    Serial.print("c'est ce que je cherche !!!");
}
}
 
}


bonne chance

B@tto

Sauf qu'ici il faudra i+=2 au lieu de i++ ;)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr


Je vous remercie pour vos réponse mais serait t-il possible d'avoir des commentaire pour expliqué le programme car je n'arrive pas a comprendre le programme dans les détail...

Tirmit

Code: [Select]
char Str[ ] = "arduino"; // je crée une chaine de caractères, mais toi elle est deja crée ,c'est "XBAIEAOPAKDNEA", ce que tu reçois

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

void loop() {
for(int i; i<7; i++){ // pour i allant de 0 à 7 (la longueur de la chaine, toi c'est :   "XBAIEAOPAKDNEA" : 14
  char lettre1 = Str[i]; // création d'une variable qui sera la lettre de la chaine  "XBAIEAOPAKDNEA", numéro i. ex: si i=0, lettre1 = 'X'
  char lettre2 = Str[i+1]; // la tu récupère la lettre suivante
  if (lettre1 == 'a' && lettre2 == 'r') {   //tu regarde si c'est la bonne combinaison
   
    Serial.print("c'est ce que je cherche !!!");
}
}
 
}


Mais je pense que y a une manière pour fusionner lettre1 et lettre2, mais je ne la connais pas
essaye ça : http://answers.yahoo.com/question/index?qid=20090210122120AAGTPsY

Je te remercie pour la réponse. Je me demandé, en modifiant le programme, afin que par exemple qu'il prend les 2 premiere valeur et qu'il me l'affiche dans le moniteur serie comment etant par exemple la tension ?

Tirmit

Tu peux reformuler la question, j'ai pas bien compris

Tirmit

Bon, après une longue réflexion j'ai trouvé la solution. J'espère que ça résout ton problème.  ]:D

Code: [Select]
String recu = "XBAIEAOPAKDNEA";

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

void loop() {

  for(int i=0; i<14; i++){
   
    char lettre1,lettre2,message[1];  //creation de variable char
    lettre1 = recu[i]; // la premiere lettre du recu
    lettre2 = recu[i+1]; // la deuxieme lettre du recu
    message[0] = lettre1;  //lettre1 prend la 1ere position dans la variable message
    message[1] = lettre2; //lettre2 prend la 2eme position dans la variable message
    Serial.print(message);
    Serial.println();}
}

Alors voila imaginons je reçois les 2 premiers caractère moi je voudrai qu'il identifie les 2 premiers caractères comment étant la tension et que dans le moniteur serie de l'arduino je veux qu'il m'affiche par exemple tension  = les 2 premiers caractères

Je ne sais pas si c'est claire pour vous....

Tirmit

Ben il faut juste ajouter :
Code: [Select]
for(...
    ...
    message[1] = lettre2;
    if(i==1) {
    Serial.print("Tension = ");
    Serial.print(message);
    Serial.println();}}

Je te remercie pour tes réponse rapide. Je vais tester le programme mais je pense qu'avec les modification que j'ai apporté cela va marche je te remercie infiniment

Go Up