Ligne 1 : |
Ligne 1 : |
| {{Rasp-Hack-Led-Backpack-NAV}} | | {{Rasp-Hack-Led-Backpack-NAV}} |
| | | |
− | {{traduction}}
| + | == Sommaire == |
| + | Si vous êtes intéressé d'écrire votre propre code, la manière la plus simple est de partir des exemples disponible avec le pilote Python (les fichiers .py commençant par 'ex_'), mais l'information suivante sera également fort utile. |
| + | |
| + | '''Mémoire tampon - Buffer:''' |
| + | |
| + | Le HT16K33 qui constitue le Led backpack/contrôleur contient une mémoire interne de 8 lignes, chaque ligne étant composée de 16 bits de données. Cette mémoire tampon est souvent appelée "buffer", un anglicisme souvent usité par facilité. |
| + | |
| + | Chaque ligne de donnée correspond en général: |
| + | * A un des caractères 7 segments de l'afficheur 4x7 segments OU |
| + | * A une ligne de point (''pixels'') d'un afficheur matrice 8x8. |
| + | |
| + | La librairie dispose donc aussi de fonction permettant de manipuler ce buffer :-) |
| + | |
| + | == Adafruit_LEDBackpack == |
| + | Tous les accès de bas niveau IO et I2C sont pris en charge par '''Adafruit_LEDBackpack.py'''. '''Adafruit_LEDBackpack.py''' est utilisé dans toutes les autres classes et exemples de la librairie. |
| + | |
| + | Ce fichier implémente une classe nommée '''LEDBackpack''', qui dispose des fonctions suivantes: |
| + | |
| + | === Luminotisté === |
| + | setBrightness(brightness) |
| + | |
| + | Permet de fixer la brillance de tout l'afficheur avec une valeur entre 0 et 15 |
| + | |
| + | === Clignotement === |
| + | setBlinkRate(blinkRate) |
| + | |
| + | Permet de fixer le clignotement (aussi que sa vitesse) de l'afficheur. |
| + | Faire clignoter l'afficheur est optionnel... mais peut être utile. |
| + | |
| + | Le paramètre blinkRate peut prendre l'une des valeurs suivantes: |
| + | * 0 = pas de clignotement (affichage fixe) |
| + | * 1 = Clignoter à 2Hz (2 fois par seconde) |
| + | * 2 = Clignoter à 1Hz (1 fois par seconde) |
| + | * 3 = clignoter à 1/2 Hz (1 fois toutes les deux secondes) |
| + | |
| + | === MàJ mémoire tampon === |
| + | setBufferRow(row, value) |
| + | |
| + | Effectue la mise à jour d'une ligne de donnée (''Updates a single row of data'') dans la mémoire tampon du HT16K33. Cette mémoire tampon est généralement appelée "Buffer" (terme anglais très usité en langue française). |
| + | |
| + | Le HT16K33 contient une mémoire interne de 8 lignes, chaque ligne étant composée de 16 bits de données. |
| + | |
| + | Chaque ligne de donnée correspond également (en général): |
| + | * A un des caractères 7 segments de l'afficheur OU |
| + | * A une ligne de point (''pixels'') d'un afficheur matrice 8x8. |
| + | |
| + | === Lire la mémoire tampon === |
| + | getBuffer() |
| + | |
| + | Permet d'obtenir le contenu de la mémoire tampon (aussi appelé "Buffer") du HT16K33. |
| + | |
| + | Retourne une liste de 8 valeurs 16-bit représentant l'état interne actuel du buffer. |
| + | |
| + | Cette fonction est utile si vous voulez rafraichir l'état de l'afficheur sans modifier le reste de son contenu. |
| + | Exemple pratique... faire clignoter juste un point (dans un coin)... peu importe l'image affichée. |
| + | |
| + | === Effacer === |
| + | clear() |
| + | |
| + | Nettoie/efface tout le contenu de la mémoire tampon (buffer). |
| + | |
| + | == Adafruit_7Segment.py == |
| + | La librairie 7-Segment est encapsulée dans le fichier '''Adafruit_7Segment.py''' et implémente une classe nommée '''SevenSegment''' (littéralement "sept segments"). |
| + | La classe est nommée comme tel car en Python, il est interdit de commencer un nom de classe par un chiffre ("7segment" serait invalide). |
| + | |
| + | En interne, la casse '''SevenSegment''' crée une instance de la classe '''Adafruit_LEDBackpack''', et vous ne devriez pas avoir besoin d'utiliser directement l'instance de AdaFruit_LEDBackpack. |
| + | |
| + | La classe '''SevenSegment''' implémente les fonctions suivantes: |
| + | |
| + | === Ecriture brute d'un caractère === |
| + | writeDigitRaw(charNumber, value) |
| + | |
| + | Permet d'écrite une valeur 16bit dans la ligne du buffer correspondant à un des caractères de l'afficheur 4x7 segment. |
| + | |
| + | Cette méthode dite "d'écriture de données brute"/"écriture brute" (write raw) permet de manipuler chaque segment de l'afficheur... et donc de concevoir de nouveau "caractères" ou animations :-) |
| + | |
| + | Pour rappel, le HT16K33 contient une mémoire tampon (buffer) de 8 lignes de 16bits. Chaque ligne correspondant à un caractère de l'afficheur. |
| + | |
| + | === Ecriture d'un chiffre === |
| + | writeDigit(charNumber, value, dot=False) |
| + | |
| + | Ecrit une chiffre décimal (0..9, appelé ''digit'' en anglais) ou un caractère HexaDecimal (0..9 et A..F) sur l'afficheur. |
| + | |
| + | * '''charNumber''' (littéralement ''numéro de caractère'' indique la position du caractère à modifier). |
| + | * '''value''' indique le caractère à afficher. |
| + | * Le troisième caractère est optionel. placez le paramètre '''dot''' (littéralement ''point'') à True pour afficher/activer le point derrière le chiffre. |
| + | |
| + | === Activer le double point === |
| + | setColon(state) |
| + | |
| + | L'afficheur dispose d'un "double point" au centre de l'afficheur 4x7-segments. |
| + | |
| + | Vous pouvez utiliser la valeur True ou False comme valeur pour le paramètre '''dot''')... pour activer/désactiver le double point qui est habituellement connecté à la ligne 2 du buffer du HT16K33. |
| + | |
| + | == Adafruit_8x8.py == |
| + | Le fichier '''Adafruit_8x8.py''' implémente la classe '''EightByEight''' qui est utilisée pour piloter une matrice LEDs de 8x8. |
| + | |
| + | Cette classe implémente les fonctions suivantes: |
| + | |
| + | === Ecriture brute d'une ligne === |
| + | writeRowRaw(charNumber, value) |
| + | |
| + | Cette fonction modifiera une ligne entière de donnée dans la mémoire tampon du HT16K33. Elle y place la valeur 16bits spécifié dans le paramètre '''value''' (cependant dans le cas d'une matrice 8x8 à une seule couleur, seul les 8 derniers bits sont utilisés). |
| + | |
| + | C'est beaucoup plus rapide que d'activer point par point. |
| + | |
| + | Note: en anglais, un point graphique (celui d'un affichage) se nomme "pixels". C'est un terme que vous rencontrer souvent sur le net. |
| + | |
| + | === Activer un point === |
| + | setPixel(x, y, color) |
| + | |
| + | En anglais un point (graphique) s'appelle setPixel. |
| + | |
| + | La fonctino setPixel permet de modifier un simple point à la position x,y (colonne, ligne) de l'afficheur. |
| + | |
| + | Attention, en Python, le premier élément d'une liste commence à 0, signifiant donc que pour modifier les pixels 1..8 dans chaque direction, il faut utiliser les valeurs de 0..7. L'exemple suivant active le pixel 3 à la 5 ième ligne: |
| + | |
| + | <syntaxhighlight lang="python">grid = EightByEight(address=0x70) |
| + | grid.setPixel(2, 4) |
| + | </syntaxhighlight> |
| + | |
| + | == Exemples == |
| + | Si vous avez besoin d'un peu d'aide, le plus simple est encore de lire les exemples Python disponibles: |
| + | |
| + | * '''ex_7segment_clock.py''': affiche l'heure sur un afficheur 4x7-segments, modifie l'état du "double point" toutes les secondes. |
| + | * '''ex_8x8_pixels.py''': Modifie constamment les pixels sur un afficheur 8x8, un pixel à la fois. |
| + | |
| + | Vous pouvez exécuter les exemples suivants à l'aide de la commande suivante: |
| + | |
| + | <nowiki>sudo python ex_8x8_pixels.py</nowiki> |
| | | |
| {{Rasp-Hack-Led-Backpack-TRAILER}} | | {{Rasp-Hack-Led-Backpack-TRAILER}} |