Mention légal| Contact

le moniteur série. Qu’est ce que c’est ?

Qu'est-ce que le moniteur série et à quoi ça sert ?

Introduction.

Pour commencer il se nomme "moniteur série" car il utilise la communication dit "série" entre votre "PC" et votre carte Arduino qui sont connectés via leurs ports "USB".

Tout d’abord, il faut dire que le moniteur série est un outil indispensable pour les tests de programmes. Il est utile pour avoir un retour de données et ainsi nous permet de déboguer les dysfonctionnements de nos programmes par des affichages séquencés des données utiles au traitement du bogue.

La communication série.

Pour ne pas entrer dans les détails de la communication série. C'est un mode de transmission (protocole)  bit à bit des données sur deux conducteurs l'un RX (Réception) et l'autre TX (Transmission). L' essentiel à savoir de la communication série est son débit en bauds car il peut être différent d'un périphérique à un autre. Je dirai  simplement que le bauds est une unité de mesure de débit qui correspond au nombre de bits transmis par seconde. Par exemple si nous avons 800 bauds, il y a 800 bits à la seconde. Il nous sera très utile de connaître son débit en bauds pour l'exploitation du moniteur avec la carte Arduino.

Où l'activer ?

Il est représenté par une loupe et se trouve  dans la barre d'outils en haut à droite du compilateur.

lanceur moniteur série Nous voyons apparaître une fenêtre.

Comment se présente le moniteur ?

Commençons par examiner plus en détaille cette fenêtre dans laquelle apparaissent plusieurs commandes et deux zones blanches d'exploitation.

  • Premièrement La grande zone au centre est la zone d'affichage des données reçues par le moniteur.
  • Deuxièmement La petite zone rectangulaire, en haut est une zone de saisie et bien-sûr le bouton Envoyer qui se trouve à sa droite permet la commande d'envoi des données saisies. On peut à l'aide du moniteur série envoyer des données vers l'Arduino qui s'occupera de les traiter grâce à la commande spécifique.

Moniteur serie présentation.

Troisièmement La case cochée "Défilement automatique" permet d’arrêter le défilement des données retournées par l'Arduino si on la décoche.

Mointeur série coche defilementQuatrièmement Le bouton de gauche en bas permet le réglage du mode de défilement des informations via une liste déroulante de choix.

Mointeur série bouton défilementFinalement Le bouton de droite en bas  affiche une liste déroulante de choix qui va nous permettre de choisir la vitesse de transmission de notre moniteur série. Voyez comme les choix sont multiples et en unité bauds.

Mointeur série bouton configEnsuite Une fois lancé, le moniteur doit être configuré. On doit lui attribuer un débit de traitement , en bauds, pour qu'il soit synchronisé à la même vitesse que l'Arduino.

Comment synchroniser tout ça ?

Avant toute chose le moniteur série et la carte Arduino ont besoin d’être renseigné et de connaître la vitesse à laquelle ils vont travailler si les deux périphériques n'ont pas le même débit (vitesse) ils ne se comprendront pas.

En premier lieu cela dépend du choix de l'utilisateur.

Ce choix se fait à deux endroits. Dans le "PC" par le moniteur série lui-même et dans la carte Arduino via le compilateur. Tout ceci est dû à une horloge qui synchronise et fixe une cadence de traitement et d'envoi des données. C'est la raison pour laquelle Les valeurs doivent être identiques.

Imaginons par exemples une chaîne de production de deux machines "A et B" qui emballent dans des cartons un produit X. La machine "A" met le produit X dans les cartons et la machine B ferme le carton. La machine "A" met 1 produit par minute dans un carton et la machine "B" ferme 1 carton par minute. Jusque là,  pas de problème, mais si j'augmente la cadence de la machine "A" à 2 produits par minute, Comme on pouvait s'y attendre il va se produire une saturation devant la machine "B" et par conséquent les cartons se retrouveront coincés, tomberont (être ignorés) et ne serons jamais fermés (lus). Pour notre synchronisation, c'est à peu près la même chose. Les deux périphériques doivent travailler à la même vitesse.

Configuration du moniteur série (IDE).

D'abord commençons par le moniteur série qui est plus directement accessible. C'est à nous de choisir et de définir le débit en bauds que l'on souhaite utiliser, donc il suffit donc de le sélectionner dans la liste déroulante qui se trouve en bas à droite du moniteur. A partir de là, nous avons configuré le débit de traitement du moniteur qui est en soit celle du "PC".

Mointeur série liste déroulanteComment configurer la vitesse de travail de l'Arduino?

Tout se passe dans le compilateur ou plus exactement lors de la configuration de notre programme dans la fonction setup().

Avant propos: Les classes.

Il faut tout d’abord savoir qu'il existe ce que l'on appelle des Classes (que nous verrons mais bien plus tard). On distingue une Classe par la majuscule postée en début de mot. la caractéristique principale d'une Classe est de regrouper des fonctions spécifiques à un travail donné. Pour les plus avertis sur le sujet, celle-ci n'a pas besoin d’être appelée en déclaration pour que l'on puisse l'utiliser.

Une Classe est comme une caisse à outils dans laquelle je vais chercher l'outil dont j'ai besoins, une fonction qui a une tâche définie et qu'il me faut. Le tournevis ou la clé à molette ont des fonctions différentes. Vous découvrirez qu’il existe pas mal de grosses caisses et toutes avec des fonctions différentes à l’intérieur.

Pour notre configuration nous aurons besoins en particulier de la classe nommé Serial. qui contient toutes les fonctions utiles à la gestion d'un port série. son travail est de gérer le traitement des données d'une communication série entre le moniteur série et le périphérique Arduino.

Les fonctions de la classe Serial.

Ci-dessous vous avez les fonctions utiles à l'exploitation de la Classe Serial.

Çà en fait des outils !! Il y a de quoi faire du bon boulot!

  • begin(); Permet de configurer la vitesse de transmission du port série.
  • print(); Permet d'envoyer une donnée vers le moniteur série.
  • println(); Permet d'envoyer une donnée vers le moniteur série et fait un saut à la ligne "ln"
  • write(); Permet d'exploiter le format binaire, renvoie une chaîne de caractères en nombre de bits
  • read(); Permet de lire les données contenues dans le buffer
  • flush(); Permet de vider la mémoire tampon, la file d'attente, ou dit le "buffer" de la liaison série.
  • available(); Permet de connaître si il y a des caractères disponibles pour lecture dans la mémoire tampon (buffer) du port série.

Dan notre cas celle qui en particulier nous intéresse c'est begin(),

La configuration de la carte Arduino.

La fonction  begin(); permet la configuration de la vitesse de transmission en bauds.

Elle se présente sous cette forme:

  • Serial.begin(Paramètre de configuration); //Configuration de vitesse de transmission série.

Le liens d'appel de "begin" avec Serial est fait par le point entre les deux mots, il est appelé en langage C membre de structure.

Parce que c'est une configuration, elle doit être appelée et paramétré à l'intérieur de la fonction "void setup()".

Ci dessous vous trouvez un exemple d'appel de cette fonction au travers de sa classe. le port série de la carte Arduino est configuré à 9600 bauds.

Mointeur série setup configAinsi nous avons configuré la vitesse de notre port série au même niveau de la carte Arduino.

Finalement notre moniteur est prêt à être utilisé ! Il ne reste donc plus qu'à créer le programme qui lui envoie des données à afficher.

Recevoir des données au moniteur série.

Cette fois ci il nous faudra donc une fonction qui transmet nos données vers le moniteur série. De nouveau nous ferons appel à la classe Serial mais cette fois ci avec la fonction print() qui permet d'envoyer les données souhaitées.

Elle se présente sous cette forme:

  • Serial.print( Donnée à afficher); // Affichage d'une donnée au moniteur série.

13-moniteur-serie

La fonction print() de Serial nous permet d'afficher deux types de données. Les numériques et alphabétiques . mais aussi des phrases complètes. Mais pour cela il nous faudra les différencier.

La différence de ces deux types de données se ferra dans l'emploie des guillemets "  " dans les parenthèse de la fonction. les guillemets permettent à la fonction print() d'identifier une chaîne de caractères en d’autres termes une phrase. C'est pour cela que dès lors que nous avons besoins d'afficher une phrase au moniteur il nous faudra l'encadrer de guillemets dans les parenthèses de la fonction. Tandis que pour les valeurs numériques brut ou les varaibles cela ne sera pas inutile. Voyez l'exemple ci dessous.

14-moniteur-serie

L'exemple ci dessus nous donne les base de l'envoie de donnée vers le moniteur.

 Envoyer des données depuis le moniteur.

Le moniteur série ne sert pas seulement à recevoir des données, il peut également en envoyer. C'est pour cela que nous avons un bouton de commande "envoyer" avec une zone de saisie de données.

Une autre Classe nous sera nécessaire pour l'exploitation du moniteur série et pour l'envoi de phrases appelées des chaînes de caractères alphabétiques. C'est la classe String qui veut dire "chaîne" en français. De même que Serial la classe String englobe des fonctions particulières, utiles aux traitements des chaînes de caractères.

Par contre pour exploiter la classe string, il nous faut lui affecter un dit "objet". Plusieurs "objets" peuvent être affectés à une classe. On appelle ça une instanciation.

Cela se présente de cette manière:Mointeur série string objetPar contre les guillemets sont laissés vides pour accueillir une chaîne de caractères (phrases) transmise par le moniteur série.

"maPhrase" est notre objet. Vous remarquerez aussi qu'il n'est pas utile de placer un point entre l'objet et la classe; contrairement à Serial.

Un objet, c'est un peu comme une variable mais pas vraiment. Cet objet contiendra la donnée à exploiter mais ne sera exploitable que par le biais de la Classe et de ses fonctions incluses.

Les fonctions de la classe String.

Voici ci-dessous les différentes fonctions de String.

  • trim() Supprime les espaces dit des « blancs » au début et à la fin d'une chaîne de caractères.
  • concat() Rassemble (concatène) deux objets String en un seul dans un nouvel objet String.
  • compareTo() Compare deux Objets String.
  • toLowerCase() Retourne en minuscules la chaîne de caractères d'un objet String.
  • toUpperCase() Retourne en majuscules la chaîne de caractères d'un objet String.
  • setCharAt() Modifie un caractère d'un objet String.
  • charAt() Retourne à un caractère précis de l'objet String.
  • endsWith() Contrôle qu'un objet String se termine ou pas avec des caractères d'un autre objet String.
  • equals() Contrôle la similarité de deux objets String. En prenant en compte le format.
  • equalsIgnoreCase() Compare la similarité de deux objets String sans prendre en compte le format.
  • getBytes() Pointe dans un tableau interne les caractères utilisés pour stocker les caractères d'un objet String.
  • indexOf() Localise un caractère ou un String dans un autre objet String
  • lastIndexOf() Localise un caractère ou un String dans un autre objet String
  • length() Renvoie la longueur de la chaîne d'un objet String, en nombre de caractères
  • replace() La fonction replace() de la classe String pour permet de remplacer toutes les instances d'un caractère donné par un autre caractère.
  • startsWith() Teste si un objet String commence avec les caractères d'un autre objet String.
  • substring() Extrait une sous-chaîne d'un objet String.
  • toCharArray() Copie les caractères d'un objet String dans un tableau de caractères (char).

FIN.

Nous vous invitons à découvrir plus en détail le moniteur série au travers de nos projets de mise en pratique. Vous trouverez les codes sources de ce sujet en les téléchargeant.

MERCI!


Recevez gratuitement les codes sources de PlaisirArduino

Amusez-vous tout de suite avec les entrées/sorties de votre carte Arduino Uno

Vous y retrouverez : des scketchs, des schémas et des PDF