Archives par mot-clé : led

L’afficheur A LEDs

Tout flipper qui se respecte a son afficheur de score. Et aujourd’hui, on utilise des afficheurs à matrice de LEDs (dot matrix). Ca tombe bien, j’en avais un petit d’avance :

L’afficheur LCD

Il s’agit d’un assemblage de 4 modules à LEDs déjà tout prêt et accessible en SPI. A terme, j’aimerais en avoir 4 autres. Pour le manipuler, on va le connecter sur l’Arduino :

  • VCC au +5V de l’Arduino,
  • GND au neutre,
  • CLK à une broche “clock”
  • DIN (ou MOSI) à une broche “données”
  • CS à une broche de sélection de l’esclave SPI avec lequel le maître souhaite discuter.

Il ne s’agit pas d’I2C, donc pas besoin a priori d’utiliser des broches spécifiques.

Pour coder l’affichage, j’ai utilisé MD_MAX72xx qui est téléchargeable dans la liste des bibliothèques d’Arduino. Elle permet de manipuler mon afficheur en ayant déjà prévu un jeu de caractères en matrice de points. Du coup, le code se limite à ceci :

1. L’initialisation du module en indiquant les pins utilisées et le nombre d’écrans connectés (ici 4).

MD_MAX72XX mx = MD_MAX72XX(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
...
mx.begin();

2. L’affichage de texte.

printText(0, MAX_DEVICES-1, "Salut !");

“printText” n’est pas disponible par défaut, mais vous avez un exemple sur le GitHub du projet.

Et voilà !

Vous pouvez intégrer des animations (scrolling, variation d’intensité), mais attention à ce qu’elles ne bloquent pas la boucle le temps qu’elles s’exécutent. Ce serait dommage de ne pas pouvoir lever un flipper parce qu’un texte scrolle. Il existe des bibliothèques comme “VariableTimedAction” qui sont censées permettre un simili multi-thread. J’ai testé rapidement, mais ça me semblait sortir l’artillerie lourde pour pas grand chose.

Vu qu’AliExpress fonctionne de nouveau, j’ai commandé un autre lot de 4 écrans. 8 est la maximum que commande la bibliothèque et ça permettra d’avoir un affichage lisible.