Aller au contenu






- - - - -

La liaison Série - Arduino

Posté par Jekert, dans Difficulté 1/5, Non catégorisé 03 avril 2016 · 3 411 visite(s)

Arduino débutant
La connexion USB entre votre PC et votre Arduino ne sert pas qu'à téléverser vos programmes et à alimenter votre carte. Elle peut aussi servir à faire communiquer l'Arduino avec votre PC (ou n'importe quel autre terminal compatible, il existe des applications sur Android pour ceci) lorsque votre programme tourne, pour ceci on se sert de la liaison Série.
 
Recevoir des données de la carte :
Recevoir des informations de la carte Arduino via le câble USB est quelque chose que je considère comme indispensable durant la phase de test de votre montage, cela vous permet de savoir ce que vous voulez (un angle, une tension, un état,...) en temps réel.
Pour commencer à faire communiquer votre carte avec votre PC il faut écrire ceci dans le logiciel Arduino:
void setup() {

  Serial.begin(9600);

}

void loop() {

}
Ceci permet de débuter la liaison Série, l'attribut 9600 correspond à une vitesse de communication en bauds, 9600 étant la valeur par défaut.
Ensuite il vous suffit d'écrire :
Serial.print(var); //Pour afficher une variable
Serial.print("Texte"); // Pour afficher du texte
Mais Serial.print écrira tout ce que vous voulez sur une seule ligne, si vous souhaitez revenir à la ligne après chaque transmission il vous faut écrire :
Serial.println(var);
Puis lorsque vous avez téléverser votre programme cliquez sur ce bouton :

Image IPB

 
Une boite de dialogue va apparaitre, vérifier bien le port sur lequel vous êtes connecté ainsi que le nombre de bauds qui doit être identique à celui entré dans votre programme.
Ainsi lorsque votre programme s'exécutera vous verrez apparaitre dans cette fenêtre les différentes informations que vous souhaitez.
 
Envoyer des données à la carte :
Si vous souhaitez commander votre Arduino depuis votre PC vous pouvez utiliser la liaison série pour lui envoyer des informations. Eskimon l'a très bien développé sur cette page, donc si vous souhaitez mieux comprendre ce que je vais dire aller la voir  ;)  .
 
Pour vérifier si la carte a reçu des données on va créer une variable (mail ici) qui va stocker un nombre (-1 si l'on a rien envoyé dans notre cas) donné par Serial.avaible();  :
void loop() {

int mail = Serial.available();
if (mail > 0) {
  //Faire ceci
}
}
Si vous voulez comparez ce qu vous avez reçu avec une variable existante voici ce que vous aurez à faire :
void loop() {

int mail = Serial.available();
int num = 8;
if (mail > 0) {

  if (Serial.read() == 8) {
    //Faire ceci
  }
  else {
  delay(10);
  }
}

}
Comme pour tout sur Arduino, je vous invite à regarder la documentation ici. Elle vous permettra de faire exactement ce que vous voulez et vous apportera des précisions sur chaque élément.
 
Exemple :
Et pour finir voici un petit exemple :
On veut allumer une led connectée au pin digital 13 via la liaison Série en envoyant les informations ON et OFF dans le moniteur série.
 
Je vous laisse essayer par vous même, il ne devrez pas y avoir de difficultés si vous vous aidez de ce que l'on a déjà dit ainsi que de la documentation, mais je vous mets ce que j'ai fait ci-dessous si vous rencontrez des problèmes.
 
 
 
 
 
 
 
 
 
 
Voici ce que j'ai fait pour cet exemple :
 
 Le câblage :

Image IPB

 

Le programme :
  // Pins E/S :
int led = 13;
  // Variables :
String msg;
int mail;

  //Fonction d'initialisation
void setup() {
  
  // Déclaration E/S :
pinMode(led, OUTPUT);

  // Connectique :
Serial.begin(9600);
}

  // Boucle inifinie :
void loop() {
  mail = Serial.available();
if (mail > 0) {
  msg = Serial.readString();
 Serial.print(msg);
 Serial.println(" Recu");
 if (msg == "ON") {
  digitalWrite(led, HIGH);
  Serial.print(msg);
  Serial.println(" OK");
 }
 else if (msg == "OFF") {
  digitalWrite(led, LOW);
  Serial.print(msg);
  Serial.println(" OK");
 }
 else {
  Serial.println("Commande inconnue");
 }
}

}
Résultats :
Moniteur série :

Image IPB

 

Montage :

Image IPBImage IPB

 

Vous pouvez retrouver cet exemple en simulation ici, avec le câblage et le programme déjà fait afin que vous poussiez le tester.

 
Problèmes possibles :
  • Mauvais choix du type de variable (j'ai préféré choisir une variable String car la fonction Serial possède une fonction .readString )
  • LED branchée dans le mauvais sens.
  • Oublie du pinMode
  • Nombres de bauds différents ou non déclarés


  • Jan aime ceci



Ma photo

Progression

État du prochain billet :

5%

 

État du prochain chapitre de l'ouvrage:

85%

 

Rechercher dans le blog

utilisateur(s) actif(s)

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)

Derniers visiteurs

Derniers commentaires