Joy-PI Leçon #14 : Matrice de 8 x 8 LED

Les matrices de LED, comme celle illustrée ci-contre, et disponible sur le Joy-PI, permet de réaliser différentes choses :

  • Afficher un texte défilant
  • Afficher une image
  • Jouer

Exceptionnellement, le fonctionnement interne de cet élément sera abordé, son schéma électrique est le suivant :

C’est une matrice de LED, avec des lignes (R1 à R8) et des colonnes (C1 à C8). Pour que la LED située en haut à gauche (R1C1) produise de la lumière, il faut qu’un courant électrique circule dans cette LED. Ceci peut être fait en mettant un état bas en C1, et haut de C2 à C8, un état bas de de R2 à R8, et un état haut en R1.
Imaginez maintenant que vous vouliez afficher une croix, ce sont les LED R1C1, R2C2, R3C3, …, R8C8, et R8C1, R7C2, …R1C8 qui doivent être allumées, comment faire ?
On peu facilement gérer une ligne, en choisissant d’alimenter R1C1 et R1C8, mais pour la colonne suivante, on est obligé de n’avoir que C2 à l’état bas, et tous les autres Cx à l’état haut, et uniquement R2 et R7 à l’état haut.
Il faut utiliser une propriété de l’œil humain : la rémanence. Si vous regardez fixement une lampe allumée, et vous éteignez celle-ci, votre œil conserve quelques instants l’image de cette lumière, l’œil diot s’adapter à la nouvelle situation.
Une autre propriété est utilisée, c’est la capacité d’adaptation du cerveau humain : lorsque vous regardez un film, vous voyez une séquence d’images défiler, entre chaque image, le personnage bouge légèrement, et c’est votre cerveau qui reconstitue en quelque sorte la transition, vous voyez le mouvement comme s’il était réellement fluide. La fréquence à laquelle le cerveau perçoit une image fluide est à plus de 20Hz environ. Les films sont tournés à 24 images par seconde au moins, à 36 lorsque les producteurs sont fortunés.
Avec la matrice de LED, on fera exactement la même chose, le logiciel modifiera quelles LEDS sont allumées et quelles LEDS sont éteintes suffisamment vite pour tromper votre œil et votre cerveau.

Commutateurs :

Pour utiliser la matrice de LEDS, placez tous le commutateurs à l’état OFF.

Le logiciel

Richard Hull et ses potes ont créé une libraire (lume.led_matrix) permettant d’utiliser la matrice de LED, presque sans rien faire.

Le pseudo-code :

  • Importation des librairies
  • Utiliser

En python :

# Copyright (c) 2017-18 Richard Hull and contributors
# License: https://github.com/rm-hull/luma.led_matrix/blob/master/LICENSE.rst
# Github link: https://github.com/rm-hull/luma.led_matrix/

# Alle benötigten Module importieren 
import re
import time
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.virtual import viewport
from luma.core.legacy import text, show_message
from luma.core.legacy.font import proportional, CP437_FONT, TINY_FONT, SINCLAIR_FONT, LCD_FONT

def main(cascaded, block_orientation, rotate):   
    # Matrix Gerät festlegen und erstellen.
    serial = spi(port=0, device=1, gpio=noop())
    device = max7219(serial, cascaded=cascaded or 1, block_orientation=block_orientation,
    rotate=rotate or 0)
    # Matrix Initialisierung in der Konsole anzeigen
    print("[-] Matrix initialized")

    # Hallo Welt in der Matrix anzeigen
    msg = "Hallo Welt"
    # Ausgegebenen Text in der Konsole Anzeigen
    print("[-] Printing: %s" % msg)
    show_message(device, msg, fill="white", font=proportional(CP437_FONT), scroll_delay=0.1)

if __name__ == "__main__":    
    # cascaded = Anzahl von MAX7219 LED Matrixen, standart=1
    # block_orientation = choices 0, 90, -90, standart=0
    # rotate = choices 0, 1, 2, 3, Rotate display 0=0°, 1=90°, 2=180°, 3=270°, standart=0
   
    try:
        main(cascaded=1, block_orientation=90, rotate=0)
    except KeyboardInterrupt:
        pass

Laisser un commentaire