Même s'il est peu probable que vous ayez besoin de la totalité des composants qu'il contient, un tel module peut grandement faciliter la mise au point d'un prototype, d'autant plus qu'il n'accapare que 3 entrées/sorties de votre microcontrôleur.
Ce court tutoriel vous indiquera comment brancher un tel module à votre carte Arduino, et comment utiliser les différents éléments qui le composent.
Connexions
Le module comporte 5 connecteurs, qui seront branchés à l'Arduino de la façon suivante:
VCC du module TM1638 : 5V de l'Arduino
GND du module TM1638: GND de l'Arduino
STB* (strobe) du module TM1638: pin 4 de l'Arduino
CLK* (clock) du module TM1638: pin 2 de l'Arduino
DIO* (digital input output) du moduleTM1638: pin 3 de l'Arduino
*: Les connecteurs STB, CLK et DIO peuvent être branchés à d'autres pins de l'Arduino si désiré: il s'agira de modifier les sketches proposés ci-dessous pour en tenir compte.
Installation de la bibliothèque
Nous allons utiliser la bibliothèque conçue par Ricardo Batista spécialement pour ce type de module. Il y a évidemment une page github d'où on peut télécharger la bibliothèque, afin de l'installer dans l'IDE Arduino.
Pendant que vous y êtes, le wiki de cette même page github dresse la liste de toutes les fonctions (ou devrais-je dire "méthode"?) de cette bibliothèque.
Initialisation de la bibliothèque
Dans chaque sketch qui utilise cette bibliothèque, on créé un objet de type "TM1638" en précisant, dans l'ordre, le numéro de la pin reliée à DIO, CLK et STB.
Puisque nous avons branché DIO à 3, CLK à 2 et STB à 4, je peux donc utiliser la syntaxe suivante:
TM1638 afficheur(3, 2, 4);
...où "afficheur" est le nom que j'ai choisi pour désigner cet objet.
Afficher des nombres
La bibliothèque TM1638 met à notre disposition plusieurs fonctions permettant d'afficher des nombres grâces aux 8 afficheurs à 7 segments:
setDisplayToDecNumber: pour afficher un nombre décimal positif
setDisplayToSignedDecNumber: pour afficher un nombre décimal positif ou négatif
setDisplayToBinNumber: pour afficher un nombre binaire
setDisplayToHexNumber: pour afficher un nombre hexadécimal
setDisplayToString: pour afficher des lettres plutôt que des nombres
clearDisplay: pour effacer ce qui était précédemment affiché
Il est également possible de réglez un des 8 chiffres en particulier (plutôt que l'ensemble du nombre à 8 chiffres) en utilisant setDisplayDigit et clearDisplayDigit.
Penchons-nous sur la fonction "setDisplayToDecNumber", puisque c'est celle qui me semble la plus utile. Elle comporte 3 arguments:
- un ombre de type "long" qui est le nombre à afficher
- un byte indiquant le ou les points décimaux qui doivent être allumés
- un booléen indiquant si les zéros qui précèdent le nombre doivent être affichée (True) ou non (False).
Par exemple:
"afficheur.setDisplayToDecNumber(12345, 0, true);" affichera "00012345"
"afficheur.setDisplayToDecNumber(12345, 0, false);" affichera "12345"
"afficheur.setDisplayToDecNumber(12345, 0b0001000 , false);" affichera "12.345"
"afficheur.setDisplayToDecNumber(12345, 0b11111111 , true);" affichera "0.0.0.1.2.3.4.5."
L'exemple ci-dessous est un simple compteur dont la valeur augmente d'une unité à chaque seconde.
Allumer des LEDs
La fonction "setLED" comporte deux arguments:
- La couleur de la LED: TM1638_COLOR_RED, TM1638_COLOR_GREEN ou TM1638_COLOR_NONE (LED éteinte). Sur certains module, les LEDs peuvent s'allumer en rouge ou en vert. Mon module ne comporte que des LEDs rouges.
- Le numéro de la LED qu'on désire allumer ou éteindre, de 0 à 7 (La LED 0 est celle qui est située à gauche du module).
L'exemple ci-dessous allume successivement chaque LED, de gauche à droite.
Lire l'état des boutons
La fonction "getButtons" retourne un octet qui décrit l'état de chaque bouton. Le bit est à 1 si le bouton correspondant est enfoncé, et à 0 s'il ne l'est pas.
Par exemple, si vous appuyez sur le deuxième bouton à partir de la gauche (S2), getButtons retourne la valeur binaire "01000000". Grâce à la fonction bitRead (qui est une fonction régulière Arduino et non une fonction spécifique à la bibliothèque), il est facile de vérifier l'état de chaque bouton.
L'exemple ci-dessous indique dans le moniteur série le numéro du bouton enfoncé.
À lire également:
- Utiliser un module TM1638 avec un ESP8266 ou un ESP32, avec un Raspberry Pi Pico, avec un ATTiny85, ou avec un STM32 Nucleo programmé avec mbed.
Aucun commentaire:
Enregistrer un commentaire