Modifications

Sauter à la navigation Sauter à la recherche
1 336 octets ajoutés ,  9 mars 2014 à 13:27
Ligne 72 : Ligne 72 :  
{{ambox|text='''Le but de cette phase de configuration est permettre au reste du croquis/sketch de ne pas avoir à ce soucier des détails techniques et disposition de la matrice. La coordonnée (0,0) utilisée pour les opérations graphiques sera toujours en haut à gauche, peut importe la position physique du premier NéoPixel.'''}}
 
{{ambox|text='''Le but de cette phase de configuration est permettre au reste du croquis/sketch de ne pas avoir à ce soucier des détails techniques et disposition de la matrice. La coordonnée (0,0) utilisée pour les opérations graphiques sera toujours en haut à gauche, peut importe la position physique du premier NéoPixel.'''}}
 
===  Pourquoi ne pas utiliser la capacité de rotation de d'Adafruit_GFX? ===
 
===  Pourquoi ne pas utiliser la capacité de rotation de d'Adafruit_GFX? ===
Adafruit_GFX sait uniquement gérer la rotation. Cela gérerait le cas de notre exemple ci-dessus, mais ne prendra pas en charge les permutation de rotation et effet miroir qui peuvent se présenter dans certaines disposition de matrice (matrix layouts), sans oublier le support "zig-zag" capability, ou encore ce que nous allons aborder dans la section suivante…
+
Adafruit_GFX sait uniquement gérer la rotation. Cela gérerait le cas de notre exemple ci-dessus, mais ne prendra pas en charge les permutation de rotation et effet miroir qui peuvent se présenter dans certaines disposition de matrice (matrix layouts), sans oublier le support "zig-zag", ou encore ce que nous allons aborder dans la section suivante…
    
== Matrices en damier (tiled) ==
 
== Matrices en damier (tiled) ==
Ligne 88 : Ligne 88 :  
=== Le paramètre matrixType ===
 
=== Le paramètre matrixType ===
   −
Avec un seule matrice, il y avait un coin de départ, un axe principal (''major axis'') en ligne ou colonne (''rows'' ou ''columns'') et une séquence de ligne (''progressive'' ou ''zigzag''). This is now doubled similar information is needed both for the pixel order within the individual tiles, {{underline|and}} the overall arrangement of tiles in the display. As before, we add up a list of symbols to produce a single argument describing the display format.
+
Avec un seule matrice, il y avait un coin de départ, un axe principal (''major axis'') en ligne ou colonne (''rows'' ou ''columns'') et une séquence de ligne (''progressive'' ou ''zigzag''). Cette information est maintenant nécessaire en double il faut indiquer la disposition des pixels dans un damier {{underline|et}} la disposition générale des damiers dans l'afficheur.  
   −
The NEO_MATRIX_* symbols work the same as in the prior single-matrix case, and now refer to the individual sub-matrices within the overall display. All tiles must follow the same format. An additional set of symbols work similarly to then describe the tile order.
+
Comme déjà vu précédemment, la disposition des pixels sur une dalle (un damier) de l'afficheur est décrit à l'aide des constantes NEO_MATRIX_*. La disposition des dalles dans l'afficheur utilise le même principe mais avec des symboles NEO_TILE_*. Au final, vous aurez un parametre contenant une somme de NEO_MATRIX_* + NEO_TILE_*.
   −
The first tile must be located at one of the four corners. Add either NEO_TILE_TOP or NEO_TILE_BOTTOM and NEO_TILE_LEFT or NEO_TILE_RIGHT to indicate the position of the first tile. This is independent of the position of the first pixel within the tiles; they can be different corners.
+
La première dalle doit être placée dans l'un des 4 coins (de l'afficheur). Ajouter donc NEO_TILE_TOP (en haut) ou NEO_TILE_BOTTOM (en bas) ainsi que NEO_TILE_LEFT (à gauche) ou NEO_TILE_RIGHT (à droite) pour indiquer la première dalle du damier. Cela est indépendant de la position du premier pixel dans la dalle; qui peut être dans un coin différent.
   −
Tiles can be arranged in horizontal rows or vertical columns. Again this is independent of the pixel order within the tiles. Add either NEO_TILE_ROWS or NEO_TILE_COLUMNS.
+
Les dalles peuvent être arrangés en ligne horizontales ou colonnes verticales. Encore une fois, cela est indépendant de l'arrangement des pixels sur une dalle. On ajoute donc l'une des constantes NEO_TILE_ROWS (dalles en lignes) ou NEO_TILE_COLUMNS (dalles en colonnes).
    
{{ADFImage|NeoPixel-UserGuide-NeoMatrix-20.png|640px}}
 
{{ADFImage|NeoPixel-UserGuide-NeoMatrix-20.png|640px}}
   −
Tiles don’t need to be square! The above is just one possible layout. The display shown at the top of this page is three 10x8 tiles assembled from NeoPixel strip.
+
Les dalles n'ont pas besoin d'être carrée! Ce que vous voyez ci-dessus est juste une des dispositions (layout) possible. L'afficheur tout en haut de la page est constitué de 3 "dalles" de 10x8 réalisée à partir de ruban NéoPixel.
   −
Once the matrix is defined, the remainder of the project is similar to Adafruit_NeoPixel. Remember to use {{fname|matrix.begin()}} in the setup() function and {{fname|matrix.show()}} to update the display after drawing. The {{fname|setBrightness()}} function is also available. The library includes a couple of example sketches for reference.
+
Une fois la matrice définie, le restant du projet est similaire à un Adafruit_NeoPixel. Rappelez-vous d'utiliser {{fname|matrix.begin()}} dans la fonction setup() et {{fname|matrix.show()}} pour mettre l'afficheur à jour. La fonction {{fname|setBrightness()}} est également disponible. La bibliothèque inclus également quelques croquis/sketch d'exemple en référence.
      −
Finally, rows or columns of tiles may be arranged in progressive or zigzag order; that is, every row or column proceeds in the same order, or alternating rows/columns switch direction. Add either NEO_TILE_PROGRESSIVE or NEO_TILE_ZIGZAG to indicate the order. '''BUT'''…if NEO_TILE_ZIGZAG order is selected, alternate lines of tiles must be rotated 180 degrees. This is intentional and by design; it keeps the tile-to-tile wiring more consistent and simple. This rotation is not required for NEO_TILE_PROGRESSIVE.
+
Pour finir, les lignes (''rows'') ou les colonnes (''columns'') du damier doivent être organisés dans un ordre progressif (''progressive'') ou zigzag; toutes les lignes ou colonnes doivent être positionnés dans le même ordre ou en inversant la direction à chaque nouvelle ligne/colonne. Ajouter donc NEO_TILE_PROGRESSIVE (ordre progressif) ou NEO_TILE_ZIGZAG (ordre en ZigZag) '''MAIS'''... si vous choisissez NEO_TILE_ZIGZAG, les lignes alternées doivent avoir des dalles tournées de 180 degrées. C'est conçu et voulu comme tel; cela permet d'avoir un raccordement électrique de dalle en dalle plus simple et plus cohérent. Cette rotation n'est pas nécessaire si vous utilisez NEO_TILE_PROGRESSIVE.
    
== Autres dispositions ==
 
== Autres dispositions ==
   −
For any other cases that are not uniformly tiled, you can provide your own function to remap X/Y coordinates to NeoPixel strip indices. This function should accept two unsigned 16-bit arguments (pixel X, Y coordinates) and return an unsigned 16-bit value (corresponding strip index). The simplest row-major progressive function might resemble this:  
+
Pour tous les autre cas ou les dalles ne sont pas disposées uniformément, vous pouvez fournir votre propre fonction de correspondance des coordonnées X/Y (fonction ''remap'') en indice NeoPixel.  
 +
 
 +
Cette fonction devrait accepter deux argument unsigned 16-bit (entiers 16 bits non signés... pour les coordonnées X, Y du pixel) et retourne un valeur unsigned 16-bit (correspondant à l'indexe du pixel dans le ruban). La fonction la plus simple correspondant à la disposition ''ligne principale, progressive'' ressemble à ceci:  
    
  <nowiki>uint16_t myRemapFn(uint16_t x, uint16_t y) {
 
  <nowiki>uint16_t myRemapFn(uint16_t x, uint16_t y) {
Ligne 113 : Ligne 115 :  
}</nowiki>
 
}</nowiki>
   −
That’s a crude example. Yours might be designed for pixels arranged in a spiral (easy wiring), or a Hilbert curve.
+
C'est un exemple simple... vous pourriez concevoir des pixels disposés en spirale (raccordement plus facile) ou en [http://fr.wikipedia.org/wiki/Courbe_de_Hilbert courbe de Hilbert] (voyez surtout la {{underline|vidéo}} en 6 itérations sur [http://en.wikipedia.org/wiki/Hilbert_curve la version anglaise de l'article]).
   −
The function is then enabled using {{fname|setRemapFunction()}}:
+
Vous pouvez ensuite activer la donction en appelant {{fname|setRemapFunction()}}:
    
  <nowiki>matrix.setRemapFunction(myRemapFn);</nowiki>
 
  <nowiki>matrix.setRemapFunction(myRemapFn);</nowiki>
    
== La RAM encore une fois ==
 
== La RAM encore une fois ==
On a per-pixel basis, Adafruit_NeoMatrix is no more memory-hungry than Adafruit_NeoPixel, requiring 3 bytes of RAM per pixel. But the number of pixels in a two-dimensional display takes off exponentially…a 16x16 display requires four times the memory of an 8x8 display, or about 768 bytes of RAM (nearly half the available space on an Arduino Uno). It can be anywhere from tricky to impossible to combine large displays with memory-hungry libraries such as SD or ffft.  
+
Adafruit_NeoMatrix n'est pas plus gourmand en RAM d'une simple dalle/ruban NéoPixels. Il nécessite donc 3 bytes/octets de RAM par pixels. Cependant, les pixels organisés en afficheur deux dimensions consomme de la RAM de façon.... exponentiel. Un afficheur 16x16 exige 4 fois plus de mémoire qu'un afficheur 8x8, soit environ 768 octets/bytes de RAM (presque la moitié de ce qui est disponible sur un Arduino Uno). Il serait compliqué (voire impossible) de combiner un grand afficheur avec des bibliothèques gourmandes en mémoire tel que SD ou ffft.
    
== Correction Gamma ==
 
== Correction Gamma ==
Because the Adafruit_GFX library was originally designed for LCDs (having limited color fidelity), it handles colors as 16-bit values (rather than the full 24 bits that NeoPixels are capable of). This is not the big loss it might seem. A quirk of human vision makes bright colors less discernible than dim ones. The Adafruit_NeoMatrix library uses ''gamma correction'' to select brightness levels that are visually (though not numerically) equidistant. There are 32 levels for red and blue, 64 levels for green.
+
A l'origine, la librairie/bibliothèque Adafruit_GFX était conçue pour des LCDs (disposant généralement d'une fidélité limitée en ce qui concerne les couleurs). En conséquence, la bibliothèque gère gère les couleurs en valeur 16-bit (plutôt qu'en couleurs 24 bits tel que NeoPixels est capable de le supporter). Cela ne représente pourtant une perte aussi important qu'il n'y parait. Un caprice de la vision humaine fait que les couleurs vives sont moins discernables que les couleurs sombres. La bibliothèque Adafruit_NeoMatrix utilise la ''correction gamma'' pour sélectionner le niveau de luminosité pour qu'ils semble visuellement équidistant les uns des autres. Il y a donc 32 niveaux de  rouge et bleu et 64 niveaux de vert (car l'oeil est nettement plus sensible au vert).
   −
The {{fname|Color()}} function performs the necessary conversion; you don’t need to do any math. It accepts 8-bit red, green and blue values, and returns a gamma-corrected 16-bit color that can then be passed to other drawing functions.  
+
La fonction {{fname|Color()}} réalise la conversion nécessaire; vous n'avez pas besoin de réaliser des opérations mathématiques. Elle accepte des valeurs 8-bits pour le rouge, vert et bleu et retourne une valeur de couleur 16-bits incluant la correction gamma... qui peu ensuite être passée aux différentes fonctions de dessin.  
    
{{NeoPixel-UserGuide-TRAILER}}
 
{{NeoPixel-UserGuide-TRAILER}}
29 917

modifications

Menu de navigation