Différences entre versions de « Rasp-Hack-Led-Backpack-Sommaire »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 49 : Ligne 49 :
 
=== Lire la mémoire tampon ===
 
=== Lire la mémoire tampon ===
 
  getBuffer()
 
  getBuffer()
   
+
 
Permet d'obtenir le contenu de la mémoire tampon (aussi appelé "Buffer") du HT16K33.
 
Permet d'obtenir le contenu de la mémoire tampon (aussi appelé "Buffer") du HT16K33.
  

Version du 31 décembre 2016 à 09:53

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:

grid = EightByEight(address=0x70)
grid.setPixel(2, 4)

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:

sudo python ex_8x8_pixels.py

Source: AdaFruit

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.