Améliorations aux modules d'affichage

Améliorations aux modules d'affichage

En ce début d'année, nous avons retravaillé sur l'interface de programmation pour piloter les écrans Yoctopuce afin d'y apporter quelques améliorations qui nous ont semblé utiles. Voici donc les nouveautés que vous découvrirez dès la prochaine mise à jour de nos librairies de programmation.



Auto-inversion périodique

Un des risques connus des écrans OLED est le burn-in: le marquage de l'écran si l'on laisse un même motif affiché trop longtemps, à cause de l'usure des pixels. Au fil du temps, les pixels qui restent presque constamment allumés finissent par ne plus s'allumer aussi clairement que les pixels voisins.

Pour un écran destiné à afficher l'état d'un capteur ou d'une expérience en permanence, cela peut être problématique. Dans le cas d'un écran monochrome, une des manières simples d'éviter complètement le problème consiste à inverser périodiquement l'image: afficher en noir sur fond uni plutôt qu'en couleur sur fond noir. Ainsi, le taux d'activation moyen de tous les pixels reste uniformément proche de 50%.

L'inversion peut naturellement être faite par le logiciel qui dessine sur l'écran. Mais pour vous faciliter la tâche, les écrans Yoctopuce incluent désormais un paramètre qui permet d'activer une inversion automatique après une période déterminée:

Inversion automatique de l'affichage
Inversion automatique de l'affichage



Contrôle du rafraîchissement

Pour permettre un rafraîchissement fluide de l'écran, sans flickering, nous préconisions jusqu'à présent de dessiner dans un DisplayLayer non visible, puis d'échanger son contenu une fois finalisé avec un layer visible. Nous offrons désormais une alternative plus intuitive, avec des nouvelles primitives qui permettent de suspendre temporairement puis de forcer le rafraîchissement de l'affichage.

Voici un exemple, d'abord avec l'ancienne méthode (toujours supportée):

layer = display.get_displayLayer(1)
layer.hide()
...
# draws in the hidden layer
layer.reset()
layer.drawText(64,16,YDisplayLayer.ALIGN.CENTER,'Hello!')
# makes the changes visible
display.swapLayerContent(1,2)


Et maintenant avec les primitives de contrôle du rafraîchissement:

layer = display.get_displayLayer(1)
...
display.postponeRefresh(500)
layer.reset()
layer.drawText(64,16,YDisplayLayer.ALIGN.CENTER,'Hello!')
display.triggerRefresh()



Polygones arbitraires

Notre librairie graphique n'incluait pour l'instant pas de primitive pour le dessin de surfaces pleines arbitraires. Pour dessiner un logo par exemple, nous vous proposions à la place de passer par un fichier GIF copié sur le module. Pour les cas où vous préféreriez utiliser une définition vectorielle, permettant des effets plus dynamiques, nous avons ajouté le support pour l'affichage de polygones arbitraires.

layer.polygonStart(10,10)
layer.polygonAdd(20,15)
layer.polygonAdd(10,20)
layer.polygonEnd()


Cette nouvelle fonction peut aussi, comme toutes les primitives graphiques, être utilisée à l'intérieur d'animations préprogrammées dans le module:

Animation autonome utilisant la fonction de dessin de polygones
Animation autonome utilisant la fonction de dessin de polygones



Paramètres des traits

Nous avons ajouté quelques méthodes à notre librairie pour pouvoir contrôler un peu plus finement le dessin de formes: il est désormais possible de choisir l'épaisseur du tracé de lignes, et dans le cas de tracé de surfaces pleines, de choisir la couleur de tracé du contour indépendamment de la couleur de remplissage.

Affichage d'images GIF

Nos modules d'affichage étaient déjà capables d'afficher des images GIF sauvées sur le filesystem du module, mais avec quelques limitations sur les fichiers supportés. Nous avons entièrement réécrit le décodeur d'image GIF pour élargir sa compatibilité, accélérer le décodage et ajouter le support de la transparence dans les images. De plus, nous avons ajouté une fonction qui permet d'afficher une image GIF envoyée au vol par l'API, sans devoir la sauver préalablement sur le filesystem du module.

Comment en profiter?

Vous trouverez toutes ces nouvelles fonctions dans la dernière version de la librairie Yoctopuce (version 2.1.11632 ou supérieure). N'oubliez pas de mettre à jour aussi le firmware de vos écrans Yoctopuce à la version 71681 (ou supérieure), puisque ce sont les modules eux-mêmes qui implémentent toutes les primitives graphiques.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.