Communication via RX et TX

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut salut En ce moment, je bosse avec un camarade sur la communication via rx et tx de notre arduino (avant de se lancer sur la xbee ^^). Le truc super c'est qu'on arrive avec deux pc différent, où dessus est connecté une arduino par pc, et avec ce code (le seul qu'on arrive à faire fonctionné):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// include the SoftwareSerial library so you can use its functions:
#include <SoftwareSerial.h>

#define rxPin 00
#define txPin 1

// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup()  {
  // define pin modes for tx, rx:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
}

void loop() {
  if (mySerial.available()>0){
  mySerial.read();
 }
}

On arrive a communiqué via la console comm (c'est à dire que ce qu'il envoie est reçu par moi et vice versa. Soucis, on ne peut ni traiter les infos, ni en envoyer directement de la carte 1 à la carte 2 ^^

On tourne sous Arduino UNO ;) Si vous avez une idée car moi je commence à sécher la x)

Merci d'avance ;)

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0

Et si tu utilise une liaison série sur la carte pour discuter avec le PC, et une autre pour discuter avec l'autre carte ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// include the SoftwareSerial library so you can use its functions:
#include <SoftwareSerial.h>

#define rxPin 00
#define txPin 1

// set up a new serial port
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

void setup()  {
  // define pin modes for tx, rx:
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  Serial.begin(9600);
}

void loop() {
  if (mySerial.available()>0){
  Serial.print(mySerial.read());
 }
  if (Serial.available()>0){
  mySerial.print(Serial.read());
 }
}
+0 -0
Auteur du sujet

En ayant mis le serial et le myserial (sans rx et tx input et output) il n'y a aucun écris ^^ Mais comment pouvons nous traité les infos reçu? ^^

Merci d'avance :)

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0

(sans rx et tx input et output) il n'y a aucun écris ^^

Dryusdan

Si tu ne configures pas les entrées/sorties, comment veux-tu que ça marche ?

Dans le code ci-dessus, je me contente de lire sur une interface pour écrire sur l'autre (en utilisant la même vitesse sur chaque interface pour ne pas avoir de problème de goulot d'étranglement), il suffit de programmer une action différente sur la réception de données sur une interface pour faire un traitement différent.

+0 -0
Auteur du sujet

Okii :) Merci :) Je test ça en projet jeudi prochain et je vous tien au courant ;)

Pourtant on utilisais la librairie SoftwareSerial et ça ne marchais pas ^^

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0
Auteur du sujet

Bonjour Eskimon :) En mettant comme pin le 2 en rx et le 3 en tx cette fois si un l'envoie, l'autre ne reçois pas :/

Et notre gros soucis viens juste du fait que quand on envoie un 1/2/3 etc… L'autre les reçois mais avec un if(chiffre= 3) ou autre, (chiffre en int, char etc..) on ne peut le traiter (et faire un var_dump/print_r est plus facile en php qu'en arduino ^^)

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0

J'ai pas du tout regardé le hardware, je pensais que ça correspondait déjà aux entrées/sorties utilisées pour dialoguer entre les arduino.

Donc effectivement, il faut choisir 2 autres pins des cartes, les relier (la pin A de la carte 1 avec la pin B de la carte 2 et vice versa), et configurer la SoftwareSerial pour utiliser les pins A et B. Ainsi, chaque carte devrait retransmettre les données reçues du PC (sur Serial) à l'autre carte (via mySerial), et ce qui est reçu sur mySerial au PC.

On peut tout à fait traiter les données reçues, pourquoi ne pourrait-on pas le faire ?

+0 -0
Auteur du sujet

Justement, on arrive pas à les intercepter ^^ Branchement arduino uno tx rx (image fritzing) Voilà ce que cela donne ^^ mais on ne peut pas par exemple avec une condition, lire le 1 et lui dire: si ce que tu reçois = 1 alors éteindre la led 13.

Merci :)

Édité par Dryusdan

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0

Du coup, il n'y a plus de PC, c'est encore plus simple.

Avec ce câblage, je vais faire un programme par Arduino:

Arduino 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void setup()  {
  Serial.begin(9600);
}

void loop() {
  Serial.print('A');
  delay(250);
  Serial.print('B');
  delay(250);
}

Arduino 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#define LED 13

void setup()  {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()>0){
    if(Serial.read() == 'A')
      digitalWrite(LED, 1);
    else
      digitalWrite(LED, 0);
  }
}

J'ai jamais fait d'arduino, mais ça doit être ça. Normalement la led devrait clignoter 2 fois par seconde.

Édité par Natalya

+0 -0
Auteur du sujet

Hey :) C'est aussi simple que ça? o.O pourtant quand on utilisais le serial.read(); du style

1
chaine = Serial.read();

ça marchais pas (char, const char * enfin bref ^^) Merci pour vos réponses :) n'ayant pas les arduinos sous la main, je ne pourrais tester que lundi u.U Je vous recontacterai alors ;) Merci pour votre aide :)

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0
Auteur du sujet

Ha? Comment ça? Je ne vois pas comment on peut utiliser les sérials, autant un à la fois oui, mais 4 c'est plus difficile. Comment accéder à tel ou tel rx pour envoyer une donnée?

Merci de l'info :)

Un projet de gestion de container sur Zds | dryWamp une page d'accueil pour Wamp

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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