Réception donnée Xbee

Bonjour,

pour mon projet de terminale, je dois m'occuper de recevoir un signal via un module Xbee. Le programme fonctionne, c'est à dire que je reçois l'information, mais la boucle loop ne marche pas, il faut que l'on reste appuyé sur le bouton reset de la carte. J'utilise une carte Arduino Uno, et un module Xbee pro S1.

Voici le programme que j'ai créé :

#include <SoftwareSerial.h>

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

void loop()
{
 char carlu = Serial.read();
 int cardispo = 0;

 cardispo = Serial.available();

 if (cardispo > 0)
 {
   carlu = Serial.read();
   Serial.print(carlu);
   cardispo = Serial.available();
 }
}

Je vous remercie à l'avance pour vos réponses, bonne journée !

Bonjour,

Mets to code entre balises comme indiqué ICI!
Dans ton code il n'y a qu'un port série alors que je pense qu'il devrait y an avoir 2. Un pour le Xbee et un pour le moniteur série.
Comment est branché ton module?

Le module est branché sur la carte Arduino, la masse est commune, alimenté 3.3V, la broche RX de la carte sur le DOUT du module, le TX sur le DIN.

bonjour,
ton prog n'a ni queue ni tête :slight_smile:

pourquoi faire un include SoftwareSerial si tu ne t'en sers pas après?

Je sais pas je pensais que ça correspondait aux lignes de codes Serial. ... alors qu'apparemment non vu la réaction que vous avez eu. Mais en dehors de ça (qui ne pose pas de problèmes, je pense), qu'est ce qui fait que la loop ne marche pas ? C'est embêtant quand même ...

Merci pour votre aide, maintenant le programme ressemble à ça, suite au lien que vous avez envoyé :

#include <SoftwareSerial.h>
SoftwareSerial xbee(2, 3);

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

void loop()
{
  if(xbee.available()) {
    while(xbee.available())  {
      Serial.write(xbee.read());
      }
    }
}

Nous rencontrons le même problème : le programme ne s'exécute qu'une seule fois, autrement dit, dans le moniteur série, je ne reçois qu'une seule fois le message que mon camarade m'envoie normalement à une intervalle de 100ms. Je vous mets aussi le programme de mon camarade, histoire que vous puissiez plus facilement trouver l'erreur :

#include <SoftwareSerial.h>
SoftwareSerial xbee(2, 3);
int SIGNAL;

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

void loop()
{
  SIGNAL = analogRead(A0);
  if (SIGNAL >= 60)
  {
    String phrase = "envoi un signal";
  Serial.println(phrase);
  xbee.println(phrase);
 }
 else
 {
   String phrase = "aucun signal";
  Serial.println(phrase);
  xbee.println(phrase);
  }
 delay(100);
}

Je tiens à préciser que mon professeur a ajouté que l'erreur pouvait venir du fait que nous utilisons des modules XBee qui ont déjà servi l'année dernière à un autre projet, en attendant les nouveaux qui ne devraient pas tarder à arriver. Est-ce possible que le problème vienne de là ?

Je vous remercie d'avance pour votre aide.

Ok, le problème est réglé, nous avons réussi à faire fonctionner avec le nouveau matériel, je vous remercie pour votre aide, bonne continuation !