← Tous les articles Article de blog

Utiliser un afficheur 7 segments MAX7219 avec Arduino

Viktoria Builds

Câbler un module afficheur 7 segments MAX7219 à 8 chiffres sur un Arduino et afficher des chiffres et des lettres en quelques minutes avec LedControl.

Voir sur YouTube

Le MAX7219 est un circuit intégré qui pilote jusqu'à 8 afficheurs sept segments via une simple interface SPI à 3 fils. On obtient un module prêt à l'emploi — le chip, l'afficheur, les condensateurs de découplage, tout sur une carte. C'est l'un des afficheurs les plus simples à utiliser avec Arduino car la bibliothèque gère tout le multiplexage.

Le module a 10 broches au total, cinq de chaque côté. Un côté est l'entrée, l'autre est la sortie pour chaîner plusieurs modules. Seul le côté entrée est nécessaire : VCC, GND, DIN, LOAD et CLK.

Composants

  • Arduino (Uno, Nano ou similaire)
  • Module afficheur 7 segments MAX7219 à 8 chiffres
  • Câbles dupont

Câblage

Connecter le côté entrée du module à l'Arduino comme suit :

  • VCC → 5V
  • GND → GND
  • DIN → broche 12
  • CLK → broche 11
  • LOAD → broche 10

Le câblage est simple. Le module fonctionne sous 5V et les lignes SPI vont directement sur les broches numériques de l'Arduino.

Bibliothèque

Installer la bibliothèque LedControl depuis le gestionnaire de bibliothèques Arduino. Chercher "LedControl" et installer celle d'Eberhard Fahle. Aucune autre dépendance n'est nécessaire.

Sketch

Initialiser un objet LedControl avec les trois numéros de broches et le nombre de modules chaînés. Ensuite le réveiller, régler la luminosité (0–15) et effacer l'afficheur. Pour afficher un chiffre, utiliser setDigit — passer l'index du dispositif, la position en partant de la droite à partir de zéro, la valeur du chiffre et si le point décimal doit s'afficher. Pour les lettres, utiliser setChar. Tous les caractères ne sont pas possibles sur un afficheur 7 segments, mais H, E, L, P et quelques autres fonctionnent bien.

#include "LedControl.h"

LedControl lc = LedControl(12, 11, 10, 1);

unsigned long delaytime = 500;

void setup() {
  lc.shutdown(0, false);
  lc.setIntensity(0, 8);
  lc.clearDisplay(0);
}

void goofy() {
  lc.setChar(0, 7, 'H', false);
  lc.setChar(0, 6, 'E', false);
  lc.setChar(0, 5, 'L', false);
  lc.setChar(0, 4, 'P', false);
  lc.setChar(0, 3, '.', false);
  lc.setChar(0, 2, '.', false);
  lc.setChar(0, 1, '.', false);
  lc.setChar(0, 0, '.', false);
  delay(delaytime + 1000);
  lc.clearDisplay(0);
  delay(delaytime * 3);
}

void loop() {
  goofy();
}

Chaînage de modules

Le côté DOUT sert au chaînage. Connecter DOUT du premier module au DIN du second, augmenter le nombre de dispositifs dans le constructeur LedControl et adresser chaque module par son index. Plusieurs modules peuvent être chaînés sur les mêmes trois broches Arduino.

Résultat

Téléverser le sketch et ça fonctionne immédiatement. Les chiffres s'allument, le point décimal est contrôlable par chiffre et la luminosité s'ajuste facilement dans le code. Le sketch complet est sur mon GitHub et lié depuis mon site. Si vous construisez quelque chose avec — une horloge, un compteur, peu importe — partagez-le dans le Discord.

Ce tutoriel t'a plu ?

Soutiens la chaîne sur Patreon et accède en avant-première aux projets, build logs et plus encore.

Soutenir sur Patreon →