Pages: 1 [2] 3   Go Down
Author Topic: [pas résolu] liaison RX TX xbee  (Read 4403 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah ok!

merci smiley
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Re bonjours j'aurais une questions qui as rien a voir mais...

j'ai réaliser le code pour une liaison série avec deux Xbee et deux arduino de telle façon a avoir deux potar en entrée et deux LEDs en sortie ( émetteur/récepteur)
ça fonctionne parfaitement
c'est alors que je fait un test avec cette fois 4 potar pour 4leds et échec...
deux fonctionne mais les autres marche en tout ou rien...

donc voila je comprend pas d'ou viens le problème.
j'ai une hypothèse: dépassement de capacité de l'xbee? ou mauvais code?
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma boule de cristal ne me dit rien.
Code ?
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Emetteur:
////////////////////PROGRAMME EMETTEUR 4 //////////////

int analogValue2, analogValue3, analogValue4, analogValue5;
int val2, val3, val4, val5;

void setup(){

Serial.begin(9600);
}

void loop(){
 
analogValue2 = analogRead(2);
analogValue3 = analogRead(3);
analogValue4 = analogRead(4);
analogValue5 = analogRead(5);


val2 = map(analogValue2, 0, 1023, 253, 0); 
val3 = map(analogValue3, 0, 1023, 253, 0);
val4 = map(analogValue4, 0, 1023, 253, 0);
val5 = map(analogValue5, 0, 1023, 253, 0);

Serial.write(byte(254));
Serial.write(byte(val2));

delay(5);
Serial.write(byte(250));
Serial.write(byte(val3));
delay(5);

Serial.write(byte(200));
Serial.write(byte(val4));
delay(5);

Serial.write(byte(22));
Serial.write(byte(val5));
delay(5);
delay(150);
}



Récepteur:
/////////////////// PROGRAMME RECEPTEUR 4 //////////////

byte incomingByte, sensor1, sensor2, sensor3, sensor4;

void setup(){

Serial.begin(9600);
Serial.println("Ready!");

pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
delay(5);

}
void loop() {
 
if (Serial.available()) { 
incomingByte = Serial.read();

Serial.println(int(incomingByte));

if ((int(incomingByte) == 254)) {
sensor1 = Serial.read();
Serial.println("  Sensor 1 = ");
Serial.println(int(sensor1));

}

if ((int(incomingByte) == 250)) {
sensor2 = Serial.read();
Serial.println("  Sensor 2 = ");
Serial.println(int(sensor2));

}

if ((int(incomingByte) == 200)) {
sensor3 = Serial.read();
Serial.println("  Sensor 3 = ");
Serial.println(int(sensor3));

}

if ((int(incomingByte) == 22)) {
sensor4 = Serial.read();
Serial.println("  Sensor 4 = ");
Serial.println(int(sensor4));

}
}

analogWrite (5, sensor1);
delay(5);
analogWrite (6, sensor2);
delay(5);
analogWrite (7, sensor3);
delay(5);
analogWrite (8, sensor4);
delay(5);
}
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

A priori en théorie ton code semble presque ok à part que tu persiste à utiliser la liaison série de l'Arduino à la fois pour l'XBee et pour l'affichage PC.

Mais je le trouve plutôt risqué et sensible aux problèmes de timings et de pertes de données.
Du moins coté récepteur ou tu prend 20ms a chaque passage dans loop().

De même j'aurais utilisé comme identifiant du capteur des valeurs qui ne peuvent pas être confondues avec les valeurs possibles des données. Tu l'as fait sur les 2 premiers mais pas pour les suivants. Si tu perd un octet, tu risque de te planter.

Je suggère :
- remap entre 0 et 250; garde 251, 252, 253 et 254 comme identifiant de capteurs. C'est ce que tu avais fait au début.

- dans le récepteur utilise un switch() c'est plus lisible (mais c'est pas çà qui fera marcher)
- dans le récepteur fait l'analogWrite tout de suite, et n'utilise pas de délais ici

Ma proposition pour le récepteur devient

Code:
void loop()
{
  if ( Serial.available() )
  {
    incomingByte = Serial.read();
    switch( incomingByte )
    {
    case 254:
      sensor1 = Serial.read();
      Serial.println("  Sensor 1 = ");
      Serial.println(int(sensor1));
      analogWrite (5, sensor1);
      break;
    case 253:
      // .. etc ...
    }
  }
}

Et n'hésite pas a faire l'essai sans les XBee avec un fil direct entre le TX de l'emetteur et le RX du recepteur.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ces conseils

donc j'ai appliquer a la lettre vos conseils ceux qui donne ça:

Emetteur:

Code:
////////////////////PROGRAMME EMETTEUR 4bis /////////////////
#include <SoftwareSerial.h>
SoftwareSerial xbee(2, 3);

int analogValue2, analogValue3, analogValue4, analogValue5;
int val2, val3, val4, val5;

void setup(){

  Serial.begin(9600);
  xbee.begin(9600);
}

void loop()
{
 
    analogValue2 = analogRead(2);
    analogValue3 = analogRead(3);
    analogValue4 = analogRead(4);
    analogValue5 = analogRead(5);
   
    val2 = map(analogValue2, 0, 1023, 253, 0); 
    val3 = map(analogValue3, 0, 1023, 253, 0);
    val4 = map(analogValue4, 0, 1023, 253, 0);
    val5 = map(analogValue5, 0, 1023, 253, 0);
   
    xbee.write(byte(251));
    xbee.write(byte(val2));
   
    xbee.write(byte(252));
    xbee.write(byte(val3));
   
    xbee.write(byte(253));
    xbee.write(byte(val4));
   
    xbee.write(byte(254));
    xbee.write(byte(val5));
   
    delay(150);
}


Récepteur:

Code:
/////////////////// PROGRAMME RECEPTEUR 4 bis//////////////
#include <SoftwareSerial.h>
SoftwareSerial xbee(2, 3);

byte incomingByte, sensor1, sensor2, sensor3, sensor4;

void setup()
{

  Serial.begin(9600);
  xbee.begin(9600);
 
  pinMode (5, OUTPUT);
  pinMode (6, OUTPUT);
  pinMode (7, OUTPUT);
  pinMode (8, OUTPUT);
  delay(5);
 
}
void loop()
{
 
  if (xbee.available())
  { 
      incomingByte = xbee.read();
      switch (incomingByte)
        {
      case 251:
          sensor1 = xbee.read();
          Serial.println("  Sensor 1 = ");
          Serial.println(int(sensor1));
          analogWrite (5, sensor1);
          break;
         
      case 252:
          sensor2 = xbee.read();
          Serial.println("  Sensor 2 = ");
          Serial.println(int(sensor2));
          analogWrite (6, sensor2);
          break;
     
      case 253:
          sensor3 = xbee.read();
          Serial.println("  Sensor 3 = ");
          Serial.println(int(sensor3));
          analogWrite (7, sensor3);
          break;
         
      case 254:
          sensor4 = xbee.read();
          Serial.println("  Sensor 4 = ");
          Serial.println(int(sensor4));
          analogWrite (8, sensor4);
          break;
        }
  }
}

Et je retrouve exactement le même problème,
c'est à dire deux potard avec deux led qui fonctionne
un potar qui fait fonctionner une led en logique
et un des deux potard qui fonctionne fait fonctionner la dernière led en logique
et le dernier potar ne fonctionnant pas du tout...


ps: avec les xbee ou avec une liaison filaire c'est le même résultat
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et que disent les traces en Serial.print ?
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Elles disent la même chose que l'info lumineuse que j'ai à quelques choses près...

j'ai les quatre pot qui font un signal analogique ( vérifier a la console )
mais seulement deux LED représente le pot
et les deux entres LED font un signal Logique ( après un certain seuil du pot )

Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

AnalogueWrite
Quote
On most Arduino boards (those with the ATmega168 or ATmega328), this function works on pins 3, 5, 6, 9, 10, and 11.

Comme quoi plus le problème est simple moins on voit la solution....
RTFM  smiley-grin
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

OMG!!!

la honte  smiley-eek-blue smiley-eek-blue

Merci beaucoup très cher @barbudor

Encore merci smiley
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjours!

Après quelques mois, j'ai réalisé un circuit imprimé pour l'émetteur seulement.
Et il m'arrive un problème:
Donc j'implante les programmes... je vois qu'il y'a un transfert de données entre les deux xBee ( grâce a des LED posté sur Tx et Rx )
l'émetteur contient 2 joysticks donc 4pot. le récepteur contient 4 leds.

Et la rien, aucune Led allumé...

la seul différence entre aujourd'hui et la dernière fois c'est que je n'ai pas utilisé la libraire "SoftwareSerial"

quelqu'un aurait une idée d'un problème?
merci
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

rectifications, 3 led allumé 1 led éteinte, et enfin une led qui varie en fonction de deux pot --"
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Un schéma complet de la carte ?
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



* Capture d’écran 2012-07-26 à 20.44.47.png (44.35 KB, 955x524 - viewed 25 times.)
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Heu ... ça c'est un typon ... pas un schéma !
On ne va pas s'amuser à suivre chaque pistes pour avoir le schéma d'origine smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: 1 [2] 3   Go Up
Jump to: