DIego Yourself

 Accueil

Niveau : Débutant

Afficher des informations

30.08.2016

Dans ce premier tutoriel concernant l'univers Arduino vous allez apprendre à utiliser le lien série d'un Arduino pour afficher sur votre ordinateur des informations produites par votre programme depuis la carte Arduino elle-même.

Pourquoi faire ?

Afficher des informations via le lien série vous permet de savoir d'une manière simple où en est votre programme et dans certains cas de vérifier s'il fonctionne bien, conformément à ce que vous attendiez. Le cas échéant, cela vous permet donc de détecter les éventuels problèmes ou erreurs (bugs) pour les corriger (déboguer). Enfin, c'est aussi un outil qui vous permet d'apprendre plus rapidement les bases, sans utiliser des afficheurs pas forcément nécessaires, qui peuvent être un petit peu plus complexes à mettre en œuvre.

Connaissances pré-requises :

Pour réaliser ce tutoriel vous aurez besoin d'avoir au minimum quelques bases en programmation, de préférence dans un langage tel que le C ou le C++ (ou avoir réalisé au minimum la "Partie 1 : Les bases de la programmation en C " du tutoriel pointé par le lien, c'est gratuit, il suffit de s'inscrire).
Pour "faire de l'Arduino" cela requiert donc non-seulement de s'intéresser à l'électronique mais aussi à la programmation, qui est tout aussi importante pour que vos montages fonctionnent correctement. C'est un aspect que malheureusement beaucoup négligent bien trop souvent, alors s'il vous plaît, ne commencez pas en commettant cette très mauvaise erreur vous aussi !

Matériel nécessaire :

Pour réaliser ce tutoriel vous aurez besoin seulement d'une carte Arduino UNO (ou d'un clone compatible) ainsi que d'un câble USB pour brancher votre Arduino.

Vous devrez avoir installé au préalable l'environnement de développement Arduino (page officielle en anglais) sur votre ordinateur. Pour résumer, si vous êtes frileux de l'anglais, il suffit de télécharger la version qui correspond au type d'ordinateur que vous avez (PC/Mac/Linux) et de l'installer. Une fois installé il suffit de choisir le type de carte que vous avez (UNO, Méga, ...) et le port sur lequel elle est connectée puis vous pouvez commencer à l'utiliser.
Pour que le vocabulaire utilisé dans ce tutoriel corresponde avec ce que vous voyez à l'écran, optez pour l'affichage de l'environnement Arduino en Français. Pour ce faire, allez dans le Menu Fichier, puis Préférences, à l'emplacement Choix de la langue sélectionnez le Français et validez en cliquant sur OK en bas. Quittez et redémarrez votre environnement/IDE Arduino, vous le retrouverez en Français.

Comment afficher quelque chose ?

Ca y est, nous pouvons commencer !
Tapez ou copiez le code source suivant dans un nouveau Croquis :

void setup()
{
// Démarrage de la connexion série
Serial.begin(115200);
}
 
// Compteur
int compteur=1;
 
void loop()
{
// Afficher la valeur du compteur sans aller à la ligne
Serial.print(compteur);
 
// Afficher du texte
Serial.println( Bonjour !);
 
// incrémenter le compteur pour le prochain tour
compteur++;
 
// Attendre une seconde avant de recommencer
delay(1000);
}
Fichier à télécharger : tuto_console1.ino

Sauvegardez votre croquis en cliquant sur le bouton  Enregistrer . Choisissez un nom pour votre croquis, personnellement, j'ai choisi "tuto_console", mais vous pouvez lui donner le nom que vous voulez.

Téléversez votre croquis dans votre carte en cliquant sur le bouton  Téléverser . Une fois votre code compilé par votre ordinateur (ca prends entre 10 et 30 secondes), vous verrez les diodes TX/RX clignoter puis la diode TX clignoter environ toutes les secondes. Même si vous ne voyez encore rien nulle part sur votre écran, c'est très bon signe.

Pour que quelque chose s'affiche à l'écran, vous devez ouvrir la console série : allez dans le menu Outils puis cliquez sur "Moniteur série" :

Arduino : menu console

Vous verrez alors apparaître une nouvelle fenêtre un peu comme ceci :

Arduino : console

Vérifiez quand même que l'option "Défilement automatique" est cochée et surtout que la vitesse de connexion est bel et bien sur 115200 bauds, comme sur l'image.

Une nouvelle ligne contenant un chiffre suivi de "Bonjour !" doit s'ajouter environ toutes les secondes.

C'est joli, mais nous avons fait quoi au juste là ?

Revenons maintenant sur le code source qui a rendu tout cela possible.

Initialisation :

Pour commencer, dans la section/fonction setup(), qui, comme vous le savez certainement déjà, est la portion de code qui n'est exécutée qu'une seule fois au démarrage de votre croquis, contient deux instructions :

Serial.begin(115200);

... qui sert à configurer le lien série entre votre Arduino et votre ordinateur, pour lui dire qu'il va échanger des informations à la vitesse de 115 200 bauds*.

Variables globales :

Au beau milieu de tout ça, vous trouvez la définition et initialisation de la variable globale compteur :

int compteur=1;

Cette déclaration crée une variable de type entier, nommée compteur contenant directement la valeur 1. Nous allons l'utiliser plus bas lors de l'affichage dans la console.

Programme cyclique :

Dans la section/fonction loop(), comme vous n'êtes pas sans l'ignorer, le code contenu est exécuté/déroulé, puis une fois la fin atteinte, il recommence au début sans réinitialiser le contenu des variables globales, et ce indéfiniment (donc jusqu'à ce que vous coupiez l'alimentation de votre Arduino ou que lui vous téléversiez un nouveau programme).

La première instruction permet de demander à votre lien série d'envoyer pour affichage la valeur actuelle de la variable compteur :

Serial.print(compteur);

C'est donc ce qui affiche dans votre console le petit chiffre avant le mot "Bonjour !".
Vous remarquerez l'absence du suffixe ln dans la fonction print(). Ce ln veut dire, en gros, quelque chose du genre : "une fois que t'as affiché ce que je te demande, fais un retour à la ligne". Or, il n'y est pas, donc une fois la valeur du compteur affichée, nous restons sur la même ligne pour tout futur affichage.

La deuxième instruction demande l'affichage du mot "Bonjour !" et d'aller à la ligne suivante :

Serial.println( Bonjour !);

Ici deux choses sont à noter :
Premièrement, la présence du suffixe ln dans l'appel de la fonction println(), il indique donc qu'il faut revenir à une nouvelle ligne une fois le mot "Bonjour !" affiché. Essayez de modifier le code en enlevant ce ln puis téléversez le nouveau code dans votre Arduino, vous verrez que maintenant tout s'affiche d'une manière peu esthétique, toujours sur la même ligne, les uns après les autres...
La deuxième chose à remarquer c'est l'espace avant le mot "Bonjour", il sert à faire en sorte que l'affichage soit plus "joli". Sans cet espace, la première ligne aurait affiché "1Bonjour !" tout collé, et ainsi de suite avec les autres lignes, ce qui n'est pas très lisible...

La troisième instruction peut sembler étrange elle aussi, elle demande à la variable compteur de s'incrémenter de 1 :

compteur++;

Cette instruction peut s'écrire aussi de la manière suivante, le résultat sera le même :

compteur = compteur + 1;

En d'autres mots, vous ajoutez 1 à la valeur de la variable compteur et stockez la nouvelle valeur toujours dans la variable compteur.
Au premier tour, c'est donc le moment où cette variable prend la valeur 2, après avoir affiché sa valeur 1 dans la première instruction de ce bloc cyclique.

Enfin, la dernière instruction est un appel à la fonction delay() :

delay(1000);

Cette fonction stoppe complètement le déroulement de votre programme en attendant que le temps que vous lui avez spécifié en paramètre s'écoule. Le temps est en millisecondes, des millièmes de secondes, ou l'équivalent d'une seconde divisée par mille. Pour attendre une seconde il est donc normal d'attendre 1000 millisecondes !

Une fois la fonction delay() ayant attendu le temps demandé (une seconde dans notre cas), tout recommence au début du code cyclique donc, le code reprend à l'instruction :

Serial.print(compteur);

... sauf que, comme les variables globales ne sont pas réinitialisées lorsque ça reboucle, maintenant compteur vaut 2 !

Vous l'aurez compris, cela recommence indéfiniment, comme vous le voyez sur votre console qui défile...

Exercices

Vérifions maintenant si vous avez bien compris ce que vous venez de lire, via quelques petits exercices :

  1. Modifiez votre code source pour que ce ne soit pas seulement "Bonjour", mais votre prénom qui s'affiche, par exemple "1 Bonjour Diego !" ;
  2. Modifiez votre code source pour que la phrase s'affiche de la façon suivante : "Bonjour Diego, pour la Xe fois !". Avec, bien entendu le chiffre qui s'incrémente. Au final vous devriez avoir un affichage qui ressemble à ceci sur votre console :

    Bonjour Diego, pour la 1e fois !
    Bonjour Diego, pour la 2e fois !
    Bonjour Diego, pour la 3e fois !

Solutions

Essayez de trouver par vous-même avant de vous jeter sur la réponse, ce n'est pas compliqué, c'est seulement la mise en pratique directe de ce que vous venez d'apprendre.
Essayez aussi toute autre modification qui vous passe par la tête, histoire de bien prendre en main cette façon de faire :

  1. La réponse est assez simple, il suffit de modifier la chaîne de caractères de la deuxième instruction du code cyclique comme ceci

    Serial.println( Bonjour Diego !);

    Il n'y a pas grand-chose à expliquer si ce n'est que vous avez modifié la phrase de type "texte" (chaîne de caractères) qui s'affiche.
  2. Pour celle-ci il faut modifier un peu plus le code et utiliser le principe du suffixe ln, voici la partie de code modifiée qui affiche le résultat demandé :

    void loop()
    {
    // Afficher le début de la phrase sans aller à la ligne
    Serial.print(Bonjour Diego, pour la );
     
    // Afficher la valeur du compteur sans aller à la ligne
    Serial.print(compteur);
     
    // Afficher la fin de la phrase ET aller à la ligne
    Serial.println(e fois !);
     
    // incrémenter le compteur pour le prochain tour
    compteur++;
     
    // Attendre une seconde avant de recommencer
    delay(1000);
    }
    Fichier à télécharger : tuto_console2.ino

    Comme vous pouvez le constater, l'astuce réside dans le fait de couper la phrase en deux, pour pouvoir afficher la valeur de votre variable au bon endroit. Puis d'utiliser le suffixe ln seulement une fois que c'est terminé.

Félicitations docteur : vous voilà familiarisé avec le principe d'affichage sur console par votre Arduino. Vous pouvez maintenant aborder d'autres tutoriels sereinement, avec cette nouvelle connaissance qui vous sera très utile !

Diego


*bauds : Aujourd'hui nous parlons plutôt en Mégaoctets par seconde pour les vitesses d'échange entre deux appareils électroniques. Les bauds sont une vitesse exprimée en bits par seconde mais qui comprend autant l'information utile que vous transmettez que les données annexes nécessaires au fonctionnement et contrôle du lien de communication. Vous trouverez des explications plus détaillées sur Wikipédia : Baud (mesure).
  Retourner en haut