Problème de programmes ..

Bonjour, je vient sollicité votre aide suite à de longue recherche sans résultat ..
Tout d'abord je suis au Lycée et le travail que je vais vous présentez et mon projet en STI2D.
Voilà, notre projet consiste à utilisé un capteur volumétrique avec comme support une carte Arduino Uno, détecter un individu puis ensuite renvoyer l'information à une autre carte Arduino Uno.
Mon travail consiste à crée un programme pour mon capteur volumétrique celui ci et fonctionnel.

Voici le programme :

int calibrationTime = 10; // 10 secondes de calibrage

int inputPin = 2; // Définir l'ensemble des variables utilisé
int pirState = LOW;
int val = 0;

void setup() {

pinMode(inputPin, INPUT); // Déclaration du capteur en entrer
Serial.begin(9600);

Serial.print("Calibrage du Capteur Volumetrique "); // Initialisation en cours
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
}
}

void loop(){
val = digitalRead(inputPin); // Lire la valeur d'entrer : 0 Rien à signaler
Serial.println(val);
if (val == HIGH) {
delay(100); // Vitesse de rafraichissement des informations

if (pirState == LOW) {

Serial.println(" !! MOUVEMENT SUSPECT "); // Message de prévention (allumage d'une led possible)
pirState = HIGH;
}
} else {
delay(100);
if (pirState == HIGH){
// we have just turned of
Serial.println("!! PLUS DE MOUVEMENT !!"); // Message de prévention, plus de signal
pirState = LOW;
}
}
}

La suite de mon travail consiste désormais a envoyer l'information binaire (1-0) à une autre carte Arduino Uno, celle ci s'occupera de traiter l'information et à juger si oui ou non la menace est réel et alerter l'utilisateur de la présence d'un intrus dans la zone protéger par le capteur.

Voici désormais le programme qui enverra l'information (sous Xbee)

#include <SoftwareSerial.h>
// RX, TX : Définition ports séries du module XBee
SoftwareSerial XbeeSerial(10, 11);

//config d'Arduino initiale

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

//Lance le réglage par défaut du module XBee pour la partie émettrice
Configuration();
}

//Programme en boucle ... (attente d'un message de l'arduino + recon. vocale)

void loop() {
delay(15000);
Serial.println("Ready !"); //UNIQUEMENT POUR LE DEBOGAGE PC
char reception[20];
String decryption;
int i;
//Reste en attente de réception dans cette boucle
while(1){
i = 0 ;
while ( Serial.available()>0 ) {
//Si reçoit quelque chose, commence à inscrire caractère par caractère dans la chaîne 'decryption'
//'reception' sert d'intermède pour mettre l'entièreté de la valeur reçue dans 'decryption'
reception = Serial.read();
_ decryption += reception*;_
_
i++;_
_
delay(100);_
_
}_
_
if (i>0) {_
_
//Serial.println(decryption); //UNIQUEMENT POUR LE DEBOGAGE PC*_
* XbeeSerial.print(decryption); //Envoi l'information reçue au récepteur XBee*
* delay(1000);*
* decryption = ""; //Remet à zéro la variable decryption*
* }*
* }*
}
//Configuration du XBEE (automatique)
void Configuration() {
* Serial.println("START CONFIG"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("+++");*
* delay(3000);*
* Serial.println("BAUD RATE : 9600"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATBD3\r");*
* delay(90);*
* Serial.println("CHANNEL : 12"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATCH12\r");*
* delay(90);*
* Serial.println("ID CHANNEL : 2014"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATID2014\r");*
* delay(90);*
* Serial.println("MODULE ADRESS : 1"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATMY1\r");*
* delay(90);*
* Serial.println("DESTINATION ADRESS : 2"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATDL2\r");*
* delay(90);*
* Serial.println("AES KEY : ATKY26CF2FD6DE74D631A7ED434125997B3D"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATKY26CF2FD6DE74D631A7ED434125997B3D\r");*
* delay(90);*
* Serial.println("AES ENABLED"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATEE1\r");*
* delay(90);*
* Serial.println("NO PARITY"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATNB0\r");*
* delay(90);*
* Serial.println("MODULE NAME"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATNI MODULE1\r");*
* delay(90);*
* Serial.println("WRITE CONFIGURATION"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATWR\r");*
* delay(90);*
* Serial.println("CLOSE NODE"); //UNIQUEMENT POUR LE DEBOGAGE PC*
* XbeeSerial.print("ATCN\r");*
* delay(90);*
* Serial.println("BACK TO LOOP"); //UNIQUEMENT POUR LE DEBOGAGE PC*

* //Retour à la boucle principale du programme*
* loop();*
Voici maintenant mon problème
Je cherche à combiner les deux programme si dessus .. seulement je ne trouve rien, aucune information sur la combinaison de deux programmes simultané. j'ai entendu parler de la librairy write mais je ne sais pas comment m'y prendre, si vous avez des informations pour avance un peut, la revu de projet approche et j'ai peur de montrer quelque chose de peu concluant :confused:
Merci encore :grinning: :grinning:

haha, t'as pris le temps de fouiller pour voir comment on met un avatar, mais pas comment on met les balises code :smiley: Modifie ton post et n'oublie pas pour la suite de les utiliser.

Qu'appelles tu "combinaison de deux programmes simultané" ??? Tu veux dire lancer tes 2 programmes en même temps ?
Si c'est ça, ce n'est pas possible car un arduino n'est pas un PC multitaches. Il faut que tu fusionnes tes 2 programmes à la main :slight_smile:

Salut merci de ta réponse si rapide, en effet je recherche à combiner les deux programmes en un seul, est-ce possible ? Si oui comment s'y prendre ? Merci encore

bonjour,
balise code svp.
envoyer comment l'info?
fil, radio, pigeon voyageur? :slight_smile:
vu le code je présume xbee.
déjà si tu essayais de faire les codes démo du xbee pour voir comment ca fonctionne pour envoyer les trames avec info.
a partir de la, ton boulot est presque terminé :wink:

Merci pour votre réponse, en effet je travail sur un module xbee, j'utilise des files ainsi qu'un module xbee comme celui ci : http://www.google.fr/imgres?imgurl=http://djynet.net/wp/wp-content/uploads/2012/04/10414-01-500x500.jpg&imgrefurl=http://djynet.net/?p%3D96&h=500&w=500&tbnid=8Oai3GVMG08tOM:&zoom=1&q=module+xbee&tbnh=91&tbnw=91&usg=__pHFvpBcwhGZIfkeAv-jn2-G_cEw=&docid=JQuqR9Cx34qBdM&sa=X&ei=p8oPVYLYLpL7aLfZgKAG&ved=0CCQQ9QEwAA

Des informations supplémentaire sur les codes de démo ?? merci pour tout

J'ai compilé tes deux codes et ça pourrait donner cela:

#include <SoftwareSerial.h>
// RX, TX : Définition ports séries du module XBee
SoftwareSerial XbeeSerial(10, 11);

int calibrationTime = 10;       // 10 secondes de calibrage
int inputPin = 2;               // Définir l'ensemble des variables utilisé
int pirState = LOW;             
int val = 0;                   

void setup() 
{
	
  pinMode(inputPin, INPUT);     // Déclaration du capteur en entrer
  Serial.begin(9600);

  Serial.print("Calibrage du Capteur Volumetrique ");     // Initialisation en cours
  for(int i = 0; i < calibrationTime; i++){
    Serial.print(".");
    delay(1000);
  }
  
  setupXbee();
}

void loop()
{
  val = digitalRead(inputPin);     // Lire la valeur d'entrer : 0 Rien à signaler
  Serial.println(val);
  if (val == HIGH) {
    delay(100);            //  Vitesse de rafraichissement des informations

    if (pirState == LOW) {

      Serial.println(" !! MOUVEMENT SUSPECT ");    // Message de prévention (allumage d'une led possible)
      pirState = HIGH;
    }
  } else {
    delay(100);
    if (pirState == HIGH){
      // we have just turned of
      Serial.println("!! PLUS DE MOUVEMENT !!");      // Message de prévention, plus de signal
      pirState = LOW;
    }
  }
  
  loopXbee();
}


//config d'Arduino initiale

void setupXbee() 
{         
//  Serial.begin(9600);
  XbeeSerial.begin(9600);
 
  //Lance le réglage par défaut du module XBee pour la partie émettrice
  Configuration();
}


//Programme en boucle ... (attente d'un message de l'arduino + recon. vocale)

void loopXbee() {
  delay(15000);
  Serial.println("Ready !"); //UNIQUEMENT POUR LE DEBOGAGE PC
  char reception[20];
  String decryption;
  int i;
  //Reste en attente de réception dans cette boucle
  while(1){
    i = 0 ;
    while ( Serial.available()>0 )      {
      //Si reçoit quelque chose, commence à inscrire caractère par caractère dans la chaîne 'decryption'
      //'reception' sert d'intermède pour mettre l'entièreté de la valeur reçue dans 'decryption'
      reception = Serial.read();
      decryption += reception;
      i++;
      delay(100);
    }
    if (i>0) {
      //Serial.println(decryption); //UNIQUEMENT POUR LE DEBOGAGE PC
      XbeeSerial.print(decryption); //Envoi l'information reçue au récepteur XBee
      delay(1000);
      decryption = ""; //Remet à zéro la variable decryption
    }
  }
}


//Configuration du XBEE (automatique)

void Configuration() {
  Serial.println("START CONFIG"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("+++");
  delay(3000);
  Serial.println("BAUD RATE : 9600"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATBD3\r");
  delay(90);
  Serial.println("CHANNEL : 12"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATCH12\r");
  delay(90);
  Serial.println("ID CHANNEL : 2014"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATID2014\r");
  delay(90);
  Serial.println("MODULE ADRESS : 1"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATMY1\r");
  delay(90);
  Serial.println("DESTINATION ADRESS : 2"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATDL2\r");
  delay(90);
  Serial.println("AES KEY : ATKY26CF2FD6DE74D631A7ED434125997B3D"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATKY26CF2FD6DE74D631A7ED434125997B3D\r");
  delay(90);
  Serial.println("AES ENABLED"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATEE1\r");
  delay(90);
  Serial.println("NO PARITY"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATNB0\r");
  delay(90);
  Serial.println("MODULE NAME"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATNI MODULE1\r");
  delay(90);
  Serial.println("WRITE CONFIGURATION"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATWR\r");
  delay(90);
  Serial.println("CLOSE NODE"); //UNIQUEMENT POUR LE DEBOGAGE PC
  XbeeSerial.print("ATCN\r");
  delay(90);
  Serial.println("BACK TO LOOP"); //UNIQUEMENT POUR LE DEBOGAGE PC

Salut pierrotm777 ! Merci pour ton aide ! C'est déjà moins le bazar sur mon moniteur ^^ le programme que tu ma donner marche en effet, cependant un problème persiste : /
J'ai l'impression que le capteur s'arrête de marcher certainement un problème de boucle je pense ?

Voici l'écran du moniteur si sa peut aider à y voir plus clair :

Calibrage du Capteur Volumetrique .....START CONFIG
BAUD RATE : 9600
CHANNEL : 12
ID CHANNEL : 2014
MODULE ADRESS : 1
DESTINATION ADRESS : 2
AES KEY : ATKY26CF2FD6DE74D631A7ED434125997B3D
AES ENABLED
NO PARITY
MODULE NAME
WRITE CONFIGURATION
CLOSE NODE
BACK TO LOOP
0
Ready !

Merci encore :slight_smile: !

Probablement à cause du while(1) de la fonction loopXbee() !
Tu reste dans cette boucle while

essai ça pour voir ?

void loopXbee() {
  delay(15000);
  Serial.println("Ready !"); //UNIQUEMENT POUR LE DEBOGAGE PC
  char reception[20];
  String decryption;
  int i;
  //Reste en attente de réception dans cette boucle
//  while(1){
    i = 0 ;
    while ( Serial.available()>0 )      {
      //Si reçoit quelque chose, commence à inscrire caractère par caractère dans la chaîne 'decryption'
      //'reception' sert d'intermède pour mettre l'entièreté de la valeur reçue dans 'decryption'
      reception = Serial.read();
      decryption += reception;
      i++;
      delay(100);
    }
    if (i>0) {
      //Serial.println(decryption); //UNIQUEMENT POUR LE DEBOGAGE PC
      XbeeSerial.print(decryption); //Envoi l'information reçue au récepteur XBee
      delay(1000);
      decryption = ""; //Remet à zéro la variable decryption
    }
//  }
}

Re, après avoir changer la fonction loopXbee() voici le résultat :

Calibrage du Capteur Volumetrique ..........START CONFIG
BAUD RATE : 9600
CHANNEL : 12
ID CHANNEL : 2014
MODULE ADRESS : 1
DESTINATION ADRESS : 2
AES KEY : ATKY26CF2FD6DE74D631A7ED434125997B3D
AES ENABLED
NO PARITY
MODULE NAME
WRITE CONFIGURATION
CLOSE NODE
BACK TO LOOP
1
!! MOUVEMENT SUSPECT
Ready !
0
!! PLUS DE MOUVEMENT !!
Ready !
0
Ready !
1
!! MOUVEMENT SUSPECT
Ready !
1
Ready !
1
Ready !
1
Ready !
1
Ready !
1
Ready !
0
!! PLUS DE MOUVEMENT !!

Le capteur à l'air de fonctionner mais un peut trop long à mon gout je vais changer de delay, mais un autre problème persiste encore, la deuxième carte ne reçoit toujours rien : /

Merci encore :slight_smile:

Quelle deuxième carte ?

A oui , je suppose que tu as une deuxième carte uno avec un xbee en réception ?

Oui en effet j'ai retoucher le programme afin d'éviter les spam inutile de "Ready" tout marche à merveille désormais, seul problème c'est la réception de la deuxième carte sous xBee en effet :slight_smile:

Merci encore :slight_smile:

As tu configuré les deux xbee pour qu'ils communiquent ensemble !
Ils remplacent une liaison série je suppose. Tu pourrais tester entre les deux arduinos sans les xbee.
Puis configurer les xbee (différents soft existent pour cela) et les ajouter à ton montage !

Voir ici ?

http://sysml-gadgeteer.pagesperso-orange.fr/Xbee%20Prise%20en%20main%20rapide%20module%20Xbee.pdf

J'ai un shield mp3 implanté sur la deuxième depuis qu'il est installer je n'arrive plus à communiquer avec elle, c'est peut être la cause du problème non ?
Autrement oui les cartes ont était tester et la communication entre elle était fonctionnel jusqu’à l'arriver du shield mp3

Merci encore :slight_smile:

Ah ! J'ai réussi à communiquer avec la carte malgre le shield mp3 avec un programme d'émission (1er poste)
Cependant avec le programme final rien n'y fait la deuxième carte ne reçoit toujours rien : /

Ah la communication marche avec le programme d'émission (voir 1er post) Mais le programme final ne marche toujours pas rien ne passe vers la deuxième carte : /

Voici le programme de réception de la deuxième carte ( si sa peut aider ) :

#include <SoftwareSerial.h>
// RX, TX : Définition ports séries du module XBee
SoftwareSerial XbeeSerial(10, 11);

int calibrationTime = 10; // 10 secondes de calibrage
int inputPin = 2; // Définir l'ensemble des variables utilisé
int pirState = LOW;
int val = 0;

void setup()
{

pinMode(inputPin, INPUT); // Déclaration du capteur en entrer
Serial.begin(9600);

Serial.print("Calibrage du Capteur Volumetrique "); // Initialisation en cours
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
}

setupXbee();
}

void loop()
{
val = digitalRead(inputPin); // Lire la valeur d'entrer : 0 Rien à signaler
Serial.println(val);
if (val == HIGH) {
delay(100); // Vitesse de rafraichissement des informations

if (pirState == LOW) {

Serial.println(" !! MOUVEMENT SUSPECT "); // Message de prévention (allumage d'une led possible)
pirState = HIGH;
}
} else {
delay(100);
if (pirState == HIGH){
// we have just turned of
Serial.println("!! PLUS DE MOUVEMENT !!"); // Message de prévention, plus de signal
pirState = LOW;
}
}

loopXbee();
}

//config d'Arduino initiale

void setupXbee()
{
// Serial.begin(9600);
XbeeSerial.begin(9600);

//Lance le réglage par défaut du module XBee pour la partie émettrice
Configuration();
}

//Programme en boucle ... (attente d'un message de l'arduino + recon. vocale)

void loopXbee() {
delay(500);

char reception[20];
String decryption;
int i;
//Reste en attente de réception dans cette boucle
// while(1){
i = 0 ;
while ( Serial.available()>0 ) {
//Si reçoit quelque chose, commence à inscrire caractère par caractère dans la chaîne 'decryption'
//'reception' sert d'intermède pour mettre l'entièreté de la valeur reçue dans 'decryption'
reception = Serial.read();

  • decryption += reception;*
  • i++;*
  • delay(1000);*
  • }*
  • if (i>0) {*
  • //Serial.println(decryption); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print(decryption); //Envoi l'information reçue au récepteur XBee*
  • delay(1000);*
  • decryption = ""; //Remet à zéro la variable decryption*
  • }*
    // }
    }
    //Configuration du XBEE (automatique)
    void Configuration() {
  • Serial.println("START CONFIG"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("+++");*
  • delay(3000);*
  • Serial.println("BAUD RATE : 9600"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATBD3\r");*
  • delay(90);*
  • Serial.println("CHANNEL : 12"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATCH12\r");*
  • delay(90);*
  • Serial.println("ID CHANNEL : 2014"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATID2014\r");*
  • delay(90);*
  • Serial.println("MODULE ADRESS : 1"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATMY1\r");*
  • delay(90);*
  • Serial.println("DESTINATION ADRESS : 2"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATDL2\r");*
  • delay(90);*
  • Serial.println("AES KEY : ATKY26CF2FD6DE74D631A7ED434125997B3D"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATKY26CF2FD6DE74D631A7ED434125997B3D\r");*
  • delay(90);*
  • Serial.println("AES ENABLED"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATEE1\r");*
  • delay(90);*
  • Serial.println("NO PARITY"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATNB0\r");*
  • delay(90);*
  • Serial.println("MODULE NAME"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATNI MODULE1\r");*
  • delay(90);*
  • Serial.println("WRITE CONFIGURATION"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATWR\r");*
  • delay(90);*
  • Serial.println("CLOSE NODE"); //UNIQUEMENT POUR LE DEBOGAGE PC*
  • XbeeSerial.print("ATCN\r");*
  • delay(90);*
  • Serial.println("BACK TO LOOP"); //UNIQUEMENT POUR LE DEBOGAGE PC*
    }
    Merci encore :slight_smile:

Bonjour,
Si tu lisais la charte du forum, tu verrais que le code doit être mis avec les "balises codes".

D'autant plus qu'il a trouvé un p****n pour faire ses devoirs :smiley: il a le temps de la lire...