Modifications

Sauter à la navigation Sauter à la recherche
6 557 octets ajoutés ,  31 décembre 2016 à 09:58
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}}
29 910

modifications

Menu de navigation