Mes puces sont sourdes et/ou muettes !

Problème de code, de câblage ou autre ?

a marqué ce sujet comme résolu.

Bonjour les zestiens ! Je vous avoue que je suis un peu embêté là…

Pour mon PPE de SI, j'ai besoin de faire transmettre des informations d'une télécommande à deux systèmes ( qui ne seront pas allumés en même temps ).

Dans mon groupe, nous sommes partis sur une carte Arduino, et des puces Xbee. Pour l'instant, je ne m'occupe que de réussir à faire fonctionner la puce, donc on utilise deux cartes Arduino pour nos tests ( le but étant, de n'en utiliser qu'une seule au final ). J'ai récupéré et modifié ( plus ou moins ) un (tout) petit programme qui devrait permettre à une des deux cartes de faire allumer la led qui se trouve sur l'autre. Voici le code de la carte qui émet l'ordre :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
//Code de l'émetteur.

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.print('a');
  delay(1000)
  Serial.print('b');

}

Et celui de la carte qui reçoit :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
void setup() {
  Serial.begin(9600);      //initialize serial
  pinMode(3, OUTPUT);    //set pin 13 as output
}

void loop() {
  while(Serial.available()){  //is there anything to read?
  char getData = Serial.read();  //if yes, read it

  if(getData == 'a'){    
      digitalWrite(3, HIGH);
  }else if(getData == 'b'){
      digitalWrite(3, LOW);
  }
  }
}

Et voici les schémas de câblage.

Emetteur

Récepteur

Le soucis que j'ai, c'est que la LED ne s'allume pas, vous devez vous en douter. Mais, je ne suis même pas sûr que le Xbee du récepteur reçoive l'information. Est-il obligatoire de "connecter" les Xbee entre eux, à l'aide d'une fonction setDestination(), et l'envoi de commandes AT pour que cela fonctionne ? J'avais essayé de rajouter une ligne de print, dans le code du récepteur, et de lui envoyer un "+++" pour vérifier s'il captait quelque chose, mais rien…

Du coup je me tourne vers vous : Ais-je été naïf de croire que la communication se ferait aussi facilement entre les deux Xbee, d'après des exemples de code vu le net, où est-ce un problème de câblage, ou autre ?

Je vous remercie d'avance du temps que vous passerez sur ce post… ;)

+0 -0

Salut.

Ca ne devrait pas changer grand chose théoriquement, mais il manque un delay dans le code de l'émetteur :

1
2
3
4
5
6
7
void loop() {
  // put your main code here, to run repeatedly:
  Serial.print('a');
  delay(1000)
  Serial.print('b');
  **delay(1000);**
}

Sans lui, le 'a' suivant envoyé immédiatement après et la led ne s'éteint pas. Sinon ça marche avec des "byte" ou des "boolean"? Peut-être y a-t-il un problème dans la transmission des lettres? Peut-être trouvera-tu ton bonheur en rajoutant des "F" dans les fonctions print :

1
Serial.print(F("a"));

https://www.arduino.cc/en/Serial/Print

J'espère avoir pu t'aider. Bon courrage pour la suite.

+0 -0

ouais, mais il faudrait mettre sur chaque arduino une caméra et plusieurs servomoteurs pour animer une main et voir celle de l'autre arduino. Ensuite un petit bout de code pourrait reconnaitre la position des "doigts" et en déduire un message. Par contre il va falloir pas mal de puissance de calcul.

Du coup ça donne quoi avec des Serial.print(F("a"));?

+0 -0

Je pense avoir trouvé de quoi vient le problème : Le Xbee fonctionne avec un signal de 3.3V, or celui de l'Arduino, qui sort du Tx, est de 5V.

Ce week end, je vais essayer d'adapter le signal pour voir si ça passe mieux.

PS : J'ai mis du temps à tilter pour le langage des signes… :honte:

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte