Étape 7: Logiciel - peinture à l’écran
Affichage est composé de quelques Modules LED, mais la forme perspective API qu’ils sont
reliés entre eux dans une toile continue. Vous pouvez placer sur cette toile bitmap sur n’importe quelle position donnée par (x, y) les coordonnées de l’image ci-dessus.
La méthode paint a suivant la syntaxe : peinture (pixel_t x, pixel_t y, pixel_t largeur, hauteur pixel_t, données uint8_t).
Il vous permet de peindre une image bitmap sur donné coordonnées avec limitée width et height. Ainsi, vous pouvez par exemple peindre une image bitmap sur (3,4) qui a 25 x 3 pixels. Il pourrait être supérieure à une taille d’affichage réel - dans ce cas il va obtenir Garni.
C’est évident et simple, mais il y a un crochet - vous devez fournir les données appropriées. Il s’agit d’un tableau 2D, où la première dimension indique verticale et deuxième position horizontale sur l’écran. Techniquement parlant des données est un tableau plat de pointeurs et chaque pointeur de tableau qui représente une ligne horizontale sur l’écran.
Se déplaçant au cours de la première dimension de données traverse sur des lignes de l’écran. La deuxième dimension de données représente les pixels horizontaux dans une ligne unique, où chaque octet représente 8 pixels. Notre affichage consistant de simples LEDs ils peuvent s’agir, dans, sur ou hors d’État, si chaque pixel n'est pas représenté par un octet, mais par un bit. Afin de couvrir 16 pixels en position horizontale, nous avons besoin de deux octets, 24 pixels nécessitent 3 octets et ainsi de suite.
Par exemple, laffichage entièrement couvert composé de 8 x 3 kits de LED (celui utilisé dans nos exemples), il nous faudrait données [3] [8]. Vous prendrez généralement assez petit pour tenir votre image bitmap et non celui qui couvrira tout affichage tableau.
La méthode paint(...) met à jour la mémoire tampon interne, afin d’envoyer le contenu de ce tampon aux puces MAX, que vous devez appeler la fonction flush(). L’idée est de vous donner la possibilité d’afficher quelques images bitmap à l’écran, et après que la peinture le résultat. Vous pouvez programmer quelques routines indépendants, qui seront mise à jour des différente partie de l’écran et rincer toutes les modifications apportées à la fois.
Communication avec MAX jetons n’est pas très rapide et envoi de contenu de l’écran entier avec chaque fonction flush() prend du temps. Vous pourriez être en mesure d’accélérer ce processus en permettant la double mise en mémoire tampon (DEOUBLE_BUFFER set en Display.h à true). Dans ce cas la méthode flush() enverra uniquement les octets qui ont été modifiés, afin que vous pouvez appeler la fonction flush() avec chaque boucle et n’avez pas à vous soucier de perdre des performances. Le seul inconvénient est d’un usage accru de RAM: nous créons un tableau 2D qui alloue 8 octets par chaque LED Kit plus quelques pointeurs qui sont habituellement nécessaires pour maintenir les tableaux.
Des tableaux 2D dans ce projet ont réduit l’empreinte mémoire, car afin de créer un tableau 2D dynamique, nous créons en fait 2 tableaux avec calculé en décalage (voir : alloc2DArray8(...) dans Util.h).