Holding Register

Objectif : grâce au tableau de bord sous Node-RED :

  • piloter les afficheurs 7 segments de la carte TickTock

Principe

Il est nécessaire de compléter le programme Arduino pour piloter l'afficheur 4 digits de la carte TickTock[1] :

  • en installant dans l'IDE Arduino la bibliothèque TickTock qui permet de piloter les afficheurs à 7 segments de la carte TickTock ;

  • en créant un Holding Register qui contiendra un nombre décimal sur 4 chiffres envoyé par le maître et que l'esclave affichera sur ses afficheurs.

Installation de la bibliothèque TickTock

Méthode

Téléchargez le ZIP de la bibliothèque dans vos documents : TickTockv2.zip [zip] .

Dans l'IDE Arduino, cliquer dans le menu Croquis -> Inclure une bibliothèque -> Ajouter la bibliothèque .ZIP... puis sélectionner la bibliothèque TickTockv2.zip pour l'ajouter à l'IDE Arduino.

Ajout d'une bibliothèque contenue dans un ZIP

Pilotage de l'afficheur

Méthode

Aller dans le menu Fichier -> Exemples -> TickTock -> display_test qui permet d'ouvrir un programme test pour l'afficheur. Compiler et téléverser ce programme. Observer le résultat.

Analysons le programme en question :

1
// test display tm1636
2
/* On inclut la bibliothèque TTSDisplay */
3
#include <TTSDisplay.h>
4
/* On crée un objet nommé display de type TTSDisplay */
5
TTSDisplay display;
6
7
void setup() {  
8
  // On utilise la méthode num() de l'objet display pour afficher 1025
9
  display.num(1025);
10
  delay(1000);
11
  /* On fait clignoter les deux points au milieu de l'afficheur 
12
     toutes les 1 secondes dans une boucle infinie while(1) */
13
  while (1)
14
  {
15
    display.pointOn();
16
    delay(500);
17
    display.pointOff();
18
    delay(500);
19
  }
20
}
21
22
void loop() {
23
}
24

Remarque

L'utilisation de bibliothèque est fréquente en C++, cela permet d'utiliser des portions de programme développées par d'autres personnes et ainsi de ne pas se soucier d'un certain niveau de détails. Dans le cas de l'afficheur de la carte TickTock, sans bibliothèque il aurait fallu étudier la documentation du composant TM1636 et ensuite piloter l'afficheur conformément aux spécifications (ce qui n'est pas une mince affaire).

L'utilisation de bibliothèque se traduit par la création d'objet informatique (display dans notre cas) dont on utilise ensuite les méthodes (num(), pointOn() et pointOff() dans notre cas).

On parle alors de programmation orientée objet.

Programmation Arduino

Il faut créer un registre de type Holding Register qui permettra de recevoir la valeur décimale envoyée par le maître.

Tableau des fonctions Modbus utilisables dans Arduino

Méthode

D'après le tableau ci-dessus on voit qu'il faut utiliser les fonctions :

  • addHreg() : pour ajouter un registre de type Holding Register ;

  • hreg() : pour lire la valeur envoyée par le maître.

Le registre aura pour adresse l'adresse 0.

La documentation est donnée en suivant les liens suivants : addHreg() et hreg().

Compléter votre programme Arduino afin :

  • d'ajouter un objet de type TTSDisplay  (en dehors du setup() et du loop());

  • d'ajouter un registre de type Holding Register à l'adresse 0 (dans le setup()) ;

  • de lire le registre puis d'afficher cette valeur sur l'afficheur dans le loop().

Vérifier que vous pouvez afficher n'importe quel nombre entier entre 0 et 9999 sur l'afficheur à l'aide de QModMaster en utilisant le code fonction Write Single Register (0x06).

Appeler le professeur pour valider la commande Modbus de l'afficheur.

Programmation NodeRED

Il faut modifier NodeRED afin d'envoyer une requête Modbus d'écriture qui envoie la valeur d'un nœud slider .

Méthode

Insérez un nœud Modbus Write et configurez-le correctement.

Insérez un nœud slider que l'on nommera Display et configurez-le (on créera un groupe nommé Holding Register pour accueillir ce nœud).

Validez l'ensemble en faisant varier la valeur affichée par la carte TickTock à partir du tableau de bord entre 0 et 9999.

Fondamental

Rendu final du Holding Register