Go Down

Topic: Port série reçevoir et envoyer (Read 2 times) previous topic - next topic

Dexxxter

Bonsoir à tous,

J'ai une Arduino Bluetooth et une Arduino UNO et je voudrais savoir si je peux avec mon port série d'ordinateur faire communiquer les deux.
Je m'explique, je voudrais que l'arduino UNO (connecté au PC via) puisse envoyer des données au PC qui lui les enverraient à l'Arduino Bluetooth. Est-ce que l'Arduino UNO et l'Arduino Bluetooth seront connecté au même port série ? Ou alors faudra-t-il que les données reçu dans le port série (COM2 par exemple) soit envoyé via un autre port (COM3 par exemple) ?

Merci d'avance :)

Jean-François

J'ai jamais essayé avec plusieurs Arduino, mais c'est peut-être possible avec Processing :

http://processing.org/reference/libraries/serial/Serial.html


Eventuellement comme ça :

Code: [Select]
myPort1 = new Serial(this, Serial.list()[1], 9600);
myPort2 = new Serial(this, Serial.list()[2], 9600);
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Dexxxter

Euh... c'est quoi Processing ?

Sinon ce que je voudrais faire en fait c'est récupérer les valeurs d'un ou plusieurs potentiomètre envoyées au PC avec l'Arduino UNO puis renvoyer ces valeurs à l'aide du PC à un Arduino Bluetooth pour diriger des servos.

Voilà, je te remercie de ta réponse en tout cas ! (j'essaye de me renseigner sur Processing actuellement)

Jean-François

Processing est un compilateur dont l'IDE est la même que celle de l'environnement Arduino, tu codes presque de la même façon, ça compile en Java donc portable sur les principales plateforme.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Dexxxter

Ok merci  ;)

Donc tu penses que c'est possible de recevoir des données dans un port série (COM1) pour les envoyer via un autre port série (COM2) et tout cela sur PC ?

Jean-François

je me suis souvent posé cette question, mais je n'ai jamais eu de projet pour le quel j'ai du faire cet essais... mais je pense que ça doit être faisable.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Dexxxter

Ok, merci bien ! ;)

J'essayerais de le faire dans les jours à venir et je reviendrais poster pour vous dire comment ça se passe :)

Jean-François

Bon... en gros ça fonctionne, j'ai fais un essai avec les bouts de code ci-dessous.
Le premier Arduino envoi "A", Processing lit sur le port série  s'il reçoit "A", il envoie la valeur lue, le deuxième Arduino lit le port série et lorsqu'il reçoit quelque chose l'envoi sur le sérial-monitor sur ce dernier s'affiche un.... A  :D

L'Arduino qui envoie :

Quote

void setup() {
  Serial.begin(9600);   // opens serial port, sets data rate to 9600 bps
}

void loop() {

  delay(1000);
  Serial.print ("A");
}





L'arduino qui reçoit :

Quote

void setup() {
  Serial.begin(9600);   // opens serial port, sets data rate to 9600 bps
}

void loop() {

  // send data only when you receive data:
  if (Serial.available() > 0) {

    Serial.print("I received: ");
    Serial.println(char(Serial.read()));
  }
}






Entre les deux Arduinos,  Processing :

Quote


char val=' ';
import processing.serial.*;

Serial myPort1; 
Serial myPort2; 

void setup() {

  println(Serial.list());

  myPort1 = new Serial(this, Serial.list()[4], 9600);
  myPort2 = new Serial(this, Serial.list()[2], 9600);
}
void draw() {
  val= myPort1.readChar();
  if (val =='A') {
    myPort2.write(val);
    val=' ';
    myPort2.clear();
  }
}


MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

B@tto

Je confirme, on peut ouvrir autant de port COM sur un PC qu'on en a.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Dexxxter

Bonsoir à tous,

Merci à toi Jean-François, ton code me sera d'une grande aide =)
Je voudrais tout de même savoir quelques trucs :
- "char val=' ';" pour avoir mis cela ? (c'est plus les ' ' que je ne comprends pas)
- "myPort1 = new Serial(this, Serial.list()[4], 9600);" que signifie le "this, Serial.list()[4]" ?

Merci bien !

Ps : super forum d'entre aide  :)

Jean-François

C'est pour que val soit initialisé avec.... rien (on est au moins sur de ne pas avoir une valeur aléatoire).

Pour ton autre question, c'est pour initialiser myPort (ou le nom que tu donnes) sur la position 4 des port listés et ça l'initialise à 9600 Bauds, tu peux changer cette valeur, mais il faut que ce soit la même chose coté Processing et coté Arduino.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up