Logo Mon Club Elec

Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC

L’affichage de texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC est une tâche relativement simple qui peut être réalisée en quelques étapes simples. Cette fonctionnalité est très utile pour les développeurs qui souhaitent tester leurs programmes avant de les déployer sur des systèmes plus complexes. Dans cet article, nous allons vous expliquer comment afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC. Nous vous expliquerons également les avantages et les inconvénients de cette méthode et comment elle peut être utilisée pour améliorer votre productivité.

Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC

Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC

1.  Présentation

Ce programme montre comment afficher du texte sur le PC lors de l’exécution d’un programme. A la différence d’un programme précédent, ce programme va stocker les chaînes affichées, qui sont en fait des constantes, en mémoire programme FLASH. Cette technique devient nécessaire dès que l’on va écrire des programmes utilisant de nombreuses chaines de caractères. En effet, normalement, les chaînes de caractères dans un programme sont stockées en RAM ce qui va saturer très rapidement la mémoire RAM dès que le nombre de chaînes augmente. Pour contourner le problème, on pourra les stocker directement dans la mémoire FLASH, comme indiqué ici.

Ce programme utilise les fonctionnalités suivantes :

  • la connexion série vers le PC

A partir de la version Arduino 1.0 : la librairie FLASH est intégrée par défaut n’a pas besoin d’être installée

Liens utiles :

2.  Matériel Nécessaire

2.1  L’espace de développement Arduino

  • … pour éditer, compiler le programme et programmer la carte Arduino.
Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC

2.2  Aucun montage associé

3.  Instructions de montage

  • Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1)

4.  Le schéma théorique du montage

Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC
Le schéma théorique du montage

5.  Le circuit du montage

Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC
Le schéma du montage à réaliser

6.  Explication du programme

6.1  Structure globale du programme

Ce programme simple comprend :

  • une entête déclarative
  • une partie « configuration » qui ne sera exécutée qu’une fois (fonction setup( ) )
  • une partie constituée d’une boucle sans fin que le programme répètera à l’infini ( fonction loop( ) ) : c’est le coeur du programme.

6.2  Déroulement du programme

Le programme se déroule de la façon suivante :

  • Après avoir pris en compte les instructions de la partie déclarative,
  • puis après avoir exécuté la partie configuration ( fonction setup( ) ),
  • le programme bouclera sans fin ( fonction loop ( ) ), exécutant de façon répétée le code compris dans la boucle sans fin.
Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC
Le déroulement du programme

7.  Au niveau de la partie déclarative :

Rien à déclarer

8.  Au niveau de la fonction d’initialisation setup( ) :

Initialisation des fonctionnalités utilisées :

  • On initialise les différentes fonctionnalités utilisées :
    • Initialisation de la communication série avec le PC
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission

9.  Au niveau de la boucle principale, la fonction loop ( ) :

  • On teste les différentes méthodes possibles pour utiliser les objets textes générés par la librairie Flash.
  • A noter la forme la plus pratique qui permet de conserver la syntaxe habituelle en faisant précéder la chaîne de caractère d’un simple F(« chaine »). Ceci nécessite une modification du fichier print.h comme indiqué sur ma page consacrée à la librairie Flash

10.  Mise en oeuvre du programme

10.1  Préparation du montage et programmation de la carte Arduino :

  • Commencer par réaliser le montage indiqué sur plaque d’expérimentation
  • Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle

10.2  Préparation du Terminal côté PC dans le logiciel Arduino

  • Côté PC, il faut ouvrir la fenêtre terminal de l’IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».
Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC
  • La fenêtre « Terminal » s’ouvre alors :
Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC
  • Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :
Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC

10.3  Fonctionnement

  • Une fois le programme programmé dans la carte Arduino, le texte doit s’afficher dans la fenêtre Terminal :
Afficher du texte stocké en mémoire programme FLASH dans la fenêtre Terminal du PC

11.  Le programme complet en langage Arduino :

A copier/coller directement dans l’éditeur Arduino

// — Programme Arduino —
// par X. HINAULT – 16/10/2010
// www.mon-club-elec.fr

// — Que fait ce programme ? —
/* Affiche des chaines de caractères stockées en mémoire Flash programme
dans le Terminal côté PC*/

// — Fonctionnalités utilisées —
// Utilise la connexion série vers le PC

// — Circuit à réaliser —
// Connexion série entre la carte Arduino et le PC (utilise les broches 0 et 1)  

//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables…

// — Inclusion des librairies utilisées —
#include <Flash.h> // inclusion de la librairie Flash

// — Déclaration des constantes —

// — constantes des broches —

// — Déclaration des variables globales —

// — Initialisation des fonctionnalités utilisées —

//**************** FONCTION SETUP = Code d’initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme

void setup()   { // debut de la fonction setup()

// — ici instructions à exécuter au démarrage —

Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission

} // fin de la fonction setup()
// ********************************************************************************

//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s’exécute sans fin en boucle aussi longtemps que l’Arduino est sous tension

void loop(){ // debut de la fonction loop()

// — ici instructions à exécuter par le programme principal —

//— utilisation classique —-

//—- déclaration objet Flash
FLASH_STRING(ma_chaine, « ma chaine superlongue qui est mise en memoire flash\n« );

// affichage de la chaine – sans modif de print.h – 1ère méthode
ma_chaine.print(Serial); // equivaut à Serial.print(ma_chaine)

// affichage de la chaine – sans modif print.h – 2ème méthode
Serial<<ma_chaine;

// 3ème méthode – plus pratique – mais nécessite petite modif du fichier print.h
// affiche texte avec saut de ligne – la chaine est stockée en mémoire Flash
// l’utilisation directe de F(chaine) nécessite une petite modif du fichier print.h
// pour plus de détails, voir :
// https://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.LibrairieFlashProgramme

// remarquer que la taille du programme varie en fonction du nombre de chaine
// ce qui n’est pas le cas si les chaines sont stockées en RAM

Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));
Serial.println(F(« **** Affichage d’une chaine mise en memoire Flash programme **** »));

delay(3000); // entre chaque affichage

} // fin de la fonction loop() – le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

// — Fin programme —
 

Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.