Bonjour,
J'ai besoin de faire communiquer l'Arduino en série.
Mais je ne comprends pas comment on s'en sert...
J'ai lu la doc sur le site, mais rien ne se passe.
Est ce que vous pouvez m'aider ?
En vous remerciant d'avance !
Olivier
Bonjour,
J'ai besoin de faire communiquer l'Arduino en série.
Mais je ne comprends pas comment on s'en sert...
J'ai lu la doc sur le site, mais rien ne se passe.
Est ce que vous pouvez m'aider ?
En vous remerciant d'avance !
Olivier
Faire communiquer arduino avec quel équipement ?
As-tu vérifier que la vitesse, RTS/CTS, stop bit et parité corresponde bien à l'équipement auquel tu veux te connecter ?
As-tu vérifier les niveaux de tensions utilisés pour ta communication série ? Un convertisseur RS232 est nécessaire si tu veux connecter ta carte à un GPS en rs232 par exemple.
La doc se trouve sinon à cette adresse : Serial.println() - Arduino Reference
Bon courage
Bonjour,
Pour le moment j'ai brancher un adaptateur TTL/RS232 puis vers mon poste, et je capture avec Hyperterm ou avec GTKterm.
J'ai brancher l'adaptateur sur le port TX/RX de l'Arduino. Mais il faut les paramétrer en port série, c'est bien ça ?
Comme ceci ?
int rxPin = 0;
int txPin = 1;
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
Mais après comment différencié le port série USB ou les pinouts ?
Olivier
Pour le moment, vous mettez la ligne RX à 0 et TX à 1, rien de plus. Vous utilisez les pin comme I/O et non un UART.
Voici un exemple pour renvoyer ce que vous envoyez à partir du pc :
int incomingByte = 0; // for incoming serial data
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) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
Vous devez par ailleurs utiliser la pin 1 pour le TX et 0 pour le RX
Cela devrait fonctionner comme cela
Bonne chance !
Merci, je vais essayer !
Bon, j'ai câblé et compilé.
Quand je tape un caractère dans la console du compilateur, je reçois bien mon caractère tapé et dans la console 'I received:' ma valeur.
Mais j'aurais besoin de l'autre sens, c'est à dire recevoir à partir de l'hyperterm jusqu'à la console.
C'est possible ?
Olivier
Par exemple :
/*
Uses a FOR loop for data and prints a number in various formats.
*/
int x = 0; // variable
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop() {
// print labels
Serial.print("NO FORMAT"); // prints a label
Serial.print("\t"); // prints a tab
Serial.print("DEC");
Serial.print("\t");
Serial.print("HEX");
Serial.print("\t");
Serial.print("OCT");
Serial.print("\t");
Serial.print("BIN");
Serial.print("\t");
Serial.println("BYTE");
for(x=0; x< 64; x++){ // only part of the ASCII chart, change to suit
// print it out in many formats:
Serial.print(x); // print as an ASCII-encoded decimal - same as "DEC"
Serial.print("\t"); // prints a tab
Serial.print(x, DEC); // print as an ASCII-encoded decimal
Serial.print("\t"); // prints a tab
Serial.print(x, HEX); // print as an ASCII-encoded hexadecimal
Serial.print("\t"); // prints a tab
Serial.print(x, OCT); // print as an ASCII-encoded octal
Serial.print("\t"); // prints a tab
Serial.print(x, BIN); // print as an ASCII-encoded binary
Serial.print("\t"); // prints a tab
Serial.println(x, BYTE); // prints as a raw byte value,
// then adds the carriage return with "println"
delay(200); // delay 200 milliseconds
}
Serial.println(""); // prints another carriage return
}
Bon courage !
Merci pour retour.
J'ai essayer, cela fonctionne bien sur le port USB et en même temps sur les ports TX et RX de la carte.
Mon but est d'utiliser les deux séparément.
Olivier
bonjour à tous
suis vraiment désolé pour la question qui va suivre car je débute dans l'arduino, je rame à mort, (je viens d'automatisme avec interface graphique, donc je suis totalement paumé mais bon.
j'ai absolument rien compris, enfin pas grand chose.
bon j'explique mon probléme, il va paraitre trés simple
Bon je suis en train de bricoler un programme pour récupérer la téléinformation de mon compteur edf et agir en fonction de certaine info lu.
la partie démodulation n'étant pas géré par moi je pars donc d'un signal serie à 1200 baud
voici mon prg il est fonctionnelle en ce moment à quelque détail prés. certain bit comme start pause et stop sont simulé, et les commentaire sont pas jours la flemmes aprés 8 h à essayer de faire un truc qui tourne rond
attention c'est lourd:
la preuve trop gros pour rentrer sur le post intégralement j'ai viré deux trois petite chose
ps: les commentaire sont pas à jours et faux par endroits
le prg décripte des suite de caractére que j'entre par le sérial moniteur, donc via usb
la premiére chose je voudrait qu'il cherche les info sur la pin rx (là ou le compteur sera connecter) et sur l'usb là ou je laisserai un pc pour suivre certaine chose telque les conso ou donner des instruction corrective, mais était il possbile car comme sur la rx je boucle les info en permanance??
la seconde chose je voudrait que le prg me réponde sur l'usb, s'il balance aussi sur le tx c'est pas grave
#define STX 'X'
#define ESPACE 'Z'
#define ETX 'Y'
int bleu = 3;
int blanc = 4;
int rouge = 5;
int hc = 6;
int hp = 7;
int prouge=8;
int pblanc=9;
int pbleu=10;
int online=2;
int b;
int c;
int d;
int e;
int f;
void setup()
{
Serial.begin(1200);
pinMode(bleu, OUTPUT);
pinMode(blanc, OUTPUT);
pinMode(rouge, OUTPUT);
pinMode(hp, OUTPUT);
pinMode(hc, OUTPUT);
pinMode(pbleu, OUTPUT);
pinMode(pblanc, OUTPUT);
pinMode(prouge, OUTPUT);
pinMode(online, OUTPUT);
}
void loop()
char trame[100]; //réservation de place pour stocker une suite de caractére
char trame2[100]; //réservation de place pour stocker une suite de caractére
char trame3[100]; //réservation de place pour stocker une suite de caractére
if (Serial.available() > 0) //si donnée quelquonque perçus
{int c = Serial.read(); //intégré les donnée dans la mémoire C
if(c==STX) //si dans c je vois STX
{
{for(int i=0; i<4; i++) //chercher dans les caractéres 0 à 3
{
delay (100); //delay d'attente pour éviter perte synchro
trame[i]=Serial.read(); //stocké les données perçus dans l'emplacement réservé
trame[4]=0;
}
if(strcmp(trame,"PTEC")==0) //si la chaine PTEC reçu
{int c = Serial.read(); //intégré les donnée dans la mémoire C
if(c==ESPACE) //si dans c je vois ESPACE
{
Serial.println("indication horraire en cours");//afficher
for(int i=0; i<4; i++) //chercher dans les caractéres 4
{
delay (100); //delay d'attente pour éviter perte synchro
trame2[i]=Serial.read(); //stocké les données perçus dans l'emplacement réservé
trame2[4]=0;
}
if(strcmp(trame2,"HCJB")==0) //si la chaine PTEC reçu
{Serial.println("heure creuse jour bleu");//afficher
digitalWrite (bleu,LOW);
digitalWrite (blanc,LOW);
digitalWrite (rouge,LOW);
digitalWrite (hc,LOW);
digitalWrite (hp,LOW);
digitalWrite (bleu,HIGH);
digitalWrite (hc,HIGH);
}
else if(strcmp(trame2,"HPJB")==0) //si la chaine PTEC reçu
{Serial.println("heure plein jour bleu");//afficher
digitalWrite (bleu,LOW);
digitalWrite (blanc,LOW);
digitalWrite (rouge,LOW);
digitalWrite (hc,LOW);
digitalWrite (hp,LOW);
digitalWrite (bleu,HIGH);
digitalWrite (hp,HIGH);
}
else if(strcmp(trame2,"HCJW")==0) //si la chaine PTEC reçu
{Serial.println("heure creuse jour blanc");//afficher
digitalWrite (bleu,LOW);
digitalWrite (blanc,LOW);
digitalWrite (rouge,LOW);
digitalWrite (hc,LOW);
digitalWrite (hp,LOW);
digitalWrite (blanc,HIGH);
digitalWrite (hc,HIGH);
}
else if(strcmp(trame2,"HPJW")==0) //si la chaine PTEC reçu
{Serial.println("heure pleine jour blanc");//afficher
digitalWrite (bleu,LOW);
digitalWrite (blanc,LOW);
digitalWrite (rouge,LOW);
digitalWrite (hc,LOW);
digitalWrite (hp,LOW);
digitalWrite (blanc,HIGH);
digitalWrite (hp,HIGH);
}
else if(strcmp(trame2,"HCJR")==0) //si la chaine PTEC reçu
{Serial.println("heure creuse jour rouge");//afficher
digitalWrite (bleu,LOW);
digitalWrite (blanc,LOW);
digitalWrite (rouge,LOW);
digitalWrite (hc,LOW);
digitalWrite (hp,LOW);
digitalWrite (rouge,HIGH);
digitalWrite (hc,HIGH);
}
else if(strcmp(trame2,"HPJR")==0) //si la chaine PTEC reçu
{Serial.println("heure pleine jour rouge");//afficher
digitalWrite (bleu,LOW);
digitalWrite (blanc,LOW);
digitalWrite (rouge,LOW);
digitalWrite (hc,LOW);
digitalWrite (hp,LOW);
digitalWrite (rouge,HIGH);
digitalWrite (hp,HIGH);
}
else
{Serial.println("tarif non reconnu");
}
}
}
else if(strcmp(trame,"DEMA")==0)
{Serial.println("indication pour demain");
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{int d = Serial.read(); //intégré les donnée dans la mémoire C
int e = Serial.read(); //intégré les donnée dans la mémoire C
int c = Serial.read(); //intégré les donnée dans la mémoire C
if(c==ESPACE) //si dans c je vois ESPACE
{for(int i=0; i<4; i++) //chercher dans les caractéres 4
{
delay (100); //delay d'attente pour éviter perte synchro
trame3[i]=Serial.read(); //stocké les données perçus dans l'emplacement réservé
trame3[4]=0;
}
if(strcmp(trame3,"BLEU")==0) //si la chaine bleu reçu
{Serial.println("prevision bleu");//afficher
digitalWrite (pbleu,LOW);
digitalWrite (pblanc,LOW);
digitalWrite (prouge,LOW);
digitalWrite (pbleu,HIGH);
}
else if(strcmp(trame3,"BLAN")==0) //si la chaine blan reçu
{Serial.println("prevision blanc");//afficher
digitalWrite (pbleu,LOW);
digitalWrite (pblanc,LOW);
digitalWrite (prouge,LOW);
digitalWrite (pblanc,HIGH);
}
else if(strcmp(trame3,"ROUG")==0) //si la chaine roug reçu
{Serial.println("prevision rouge");//afficher
digitalWrite (pbleu,LOW);
digitalWrite (pblanc,LOW);
digitalWrite (prouge,LOW);
digitalWrite (prouge,HIGH);
}
else
{Serial.println("tarif non reconnu ou non indiqué");
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else //sinon
{
Serial.println("trame non reconnus ou inutile"); //afficher
}
}
}
}
}
je voudrais asvoir ce que je dois ajouter comme ligne et ou,
avec les explique ça serait encore mieux
je tourne avec une usb board.
merci d'avance
ps je sais pour les puriste y plus efficace et plus compact mais avec un arduino seulement depuis 3 jours et sans y avoir jamais touché, j'ai fait ce que j'ai pu
pour ceux qu'il veulent le voir parler rentrer la serie suivante dans le sérial moniteur.
XPTECZKFSDHFDSJXPTECZFDSJKLSDJFXJHLKFJSDKLFJLSKDJFLXDEMAINZFDSJKLFSDHJKHXDEMAINZBLEUXJKLFDSQJFSLDKFJXPTECZHCJR