YLed vs YColorLed vs YColorLedCluster

YLed vs YColorLed vs YColorLedCluster

La semaine passée, nous avons sorti le Yocto-MaxiBuzzer, qui est une version sous stéroïdes du Yocto-Buzzer. Une des différences est l'utilisation de LEDs RGB à la place des deux LEDs monochromes rouge et verte. Par conséquent, il faut utiliser la classe YColorLedCluster ou YColorLed pour piloter la LED RBG, alors que le Yocto-Buzzer utilisait la classe YLed. Du coup, on s'est dit que c'était probablement utile de faire un article qui explique les différences entre ces trois APIs qui permettent de contrôler les différentes LEDs des modules Yoctopuce.



Dans cet article, nous allons parler de fonctions présentes sur les modules Yoctopuce. Si vous n'avez jamais utilisé de module Yoctopuce, nous vous recommandons de commencer par la lecture de notre article sur la Structure logique des modules Yoctopuce.

Dans toutes les API de programmation Yoctopuce, vous allez trouver trois classes qui permettent de contrôler une LED: YLed, YColorLed et YColorLedCluster.

Comme nous allons le voir, ces classes ne sont pas interchangeables, et le choix de la classe à utiliser dépend du module Yoctopuce que vous utilisez.

YLed


La classe YLed permet de contrôler une seule LED monochrome. Actuellement, seul le Yocto-Buzzer utilise cette classe.

Cette classe permet de contrôler l'intensité de la LED, mais aussi d'attribuer des séquences de clignotement préprogrammée (clignotement lent, clignotement rapide, etc...). Les séquences de clignotement sont exécutées directement par le module, ce qui permet à la LED de continuer à clignoter même si le programme est stoppé.

Le code suivant fait clignoter la LED à 1 Hz:

led1 = YLed.FirstLed()
led1.set_power(YLed.POWER_ON)
led1.set_blinking(YLed.BLINKING_RUN)




Évidemment, la couleur de la LED monochrome ne peut pas être changée, mais certains modules ont plusieurs LEDs de différentes couleurs. Par exemple, le Yocto-Buzzer à deux LEDs, led1 permet de contrôler la LED verte alors de led2 permet de contrôler la LED rouge.

YColorLed


La classe YColorLed permet de contrôler une seule LED RGB. Actuellement, les modules qui utilisent cette classe sont le Yocto-Color, Yocto-Color-V2, Yocto-PowerColor et Yocto-MaxiBuzzer.

Il y a une fonction YColorLed par LED RGB présente sur le module. Par exemple, le Yocto-Color à deux fonctions colorLed1 et colorLed2, mais le Yocto-MaxiBuzzer n'a qu'une seule fonction colorLed.

Note: les LEDs supplémentaires branchées sur le port d'extension des modules Yocto-MaxiBuzzer ou Yocto-Color-V2 ne peuvent pas être pilotée avec la classe YColorLed. Il faut utiliser la classe YColorLedCluster comme expliqué plus bas.

Cette classe permet de contrôler l'intensité et la couleur de la LED. Il est possible de spécifier la couleur sous le format RGB (Rouge Vert Bleu) ou HSL (Hue Saturation Lightness). Il est aussi possible de changer la couleur de manière immédiate, ou d'effectuer une transition sur un période donnée, par exemple passer de la couleur courante au bleu en 2 secondes.

Le code suivant allume la LED en bleu:

cled1 = YColorLed.FirstColorLed()
cled1.set_rgbColor(0x0000ff)



En plus de pouvoir spécifier la couleur de la LED RGB, la classe YColorLed permet de réaliser ses propres séquences de clignotement. Par exemple, le code suivant permet de faire clignoter la LED de rouge à éteint sur une durée d'une seconde.

cled1 = YColorLed.FirstColorLed()
cled1.resetBlinkSeq()
cled1.addRgbMoveToBlinkSeq(0xff0000, 500)
cled1.addRgbMoveToBlinkSeq(0, 500)
cled1.startBlinkSeq()



Les séquences ne sont pas limitées à deux instructions, il est possible d'ajouter plusieurs instructions à une séquence et avec différents tempo. Il est par exemple possible d'alterner entre différentes couleurs.

Le code suivant alterne entre le rouge, vert et le bleu.

cled1 = YColorLed.FirstColorLed()
cled1.resetBlinkSeq()
cled1.addRgbMoveToBlinkSeq(0xff0000, 200)
cled1.addRgbMoveToBlinkSeq(0x00ff00, 500)
cled1.addRgbMoveToBlinkSeq(0x0000ff, 1000)
cled1.startBlinkSeq()




YColorLedCluster


La classe YColorLedCluster permet de contrôler une chaîne de LED RGB. C'est-à-dire qu'avec cette fonction il est possible de piloter toutes les LEDs RGB du module. Actuellement, les modules qui utilise cette classe sont le Yocto-Color-V2 et leYocto-MaxiBuzzer.

C'est la seule fonction qui permet de piloter les LEDs qui sont branchées sur le port d'extension. Il est possible de contrôler au total 150 LEDs RGB, pour autant que ce soit les modèles WS2812B, WS2812C, SK6812 (RGB) ou SK6812RGBW (RGBW).

Il est possible de contrôler individuellement l'intensité et la couleur de chaque LED. Comme pour la fonction YColorLed, il est possible de spécifier la couleur sous format RGB (Rouge Vert Bleu) ou HSL (Hue Saturation Lightness). Il est aussi possible de changer la couleur de manière immédiate, ou d'effectuer une transition sur un période donnée, par exemple passer du bleu au vert en 2 secondes.

Le code suivant allume les 15 première LEDs en bleu:

ledCluster = YColorLedCluster.FirstColorLedCluster()
ledCluster.set_rgbColor(0, 15, 0x0000ff)



Il est possible de programmer des animations qui sont exécutées directement par le module à l'aide des séquences. Une séquence est une suite de transitions de couleurs. Une transition est définie par trois paramètres: L'espace de couleur à utiliser, la couleur finale et sa durée en ms. Par exemple "transition vers la couleur RGB 0xff0000 en 500ms".

Par exemple le code suivant permet de faire clignoter toutes les LEDs de rouge à éteint sur une durée d'une seconde.

ledCluster = YColorLedCluster.FirstColorLedCluster()
ledCluster.resetBlinkSeq(0);
ledCluster.addRgbMoveToBlinkSeq(0, 0xff0000, 500);
ledCluster.addRgbMoveToBlinkSeq(0, 0x000000, 500);
ledCluster.linkLedToBlinkSeq(0, 150, 0, 0);
ledCluster.startBlinkSeq(0);



La classe YColorLedCluster supporte jusqu'à 8 séquences, ce qui permet d’animer indépendamment différentes parties de la chaîne de LEDs. Il est aussi possible de désynchroniser les LEDs en spécifiant un offset, ce qui permet de réaliser des animations plus élaborées:

Une animation réalisée à l'aide des séquences
Une animation réalisée à l'aide des séquences



Pour plus de détails sur les séquences de la classe YColorLedCluster, vous pouvez consulter notre article sur le sujet: Animer des LEDs RGB avec un Yocto-Color-V2.

La classe YColorLedCluster permet aussi de configurer une séquence par défaut qui est exécutée dès que le module est alimenté. Cette fonctionnalité permet par exemple de réaliser des balises lumineuses programmables.


Quelle classe est-ce que je dois utiliser ?


Pour conclure, si vous vous demandez quelle classe vous devez utiliser, voici un tableau récapitulatif:

YLedYColorLedYColorLedCluster
CouleurMonochromeRGBRGB
Nbr de LEDs111 à 150
SéquencesPrédéfiniesProgrammableProgrammable
Nbr de séquences1 par LED1 par LED8 au total
ModulesYocto-BuzzerYocto-Color
Yocto-Color-V2
Yocto-PowerColor
Yocto-MaxiBuzzer
Yocto-Color-V2
Yocto-MaxiBuzzer




Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.