Les bases du Yocto-Color-V2

Les bases du Yocto-Color-V2

Récemment, nous avons remarqué que nos librairies n'avaient pas d'exemple qui utilisait le Yocto-Color-V2. En plus d'ajouter cet exemple à toute nos librairie, nous avons donc décidé d'écrire un article qui illustre la nouvelle fonction qui à été ajoutée au Yocto-Color-V2.





La première version du Yocto-Color ne pouvait piloter que deux LEDs RGB. Pour les piloter le module possédait deux fonctions, colorled1 et colorled2, qui permettaient chacune de contrôler respectivement la LED 1 et la LED 2.

Cependant, le Yocto-Color-V2 permet de piloter jusqu’à 150 LEDs, et le CPU du module ne permet pas de gérer 150 fonctions pour chacune des LEDs. Cela n’aurait pas été très pratique de toute façon.

Nous avons donc ajouté une nouvelle fonction colorLedCluster qui permet de contrôler toutes les LEDs. Cette fonction colorLedCluster est un peu plus compliquée car elle permet de gérer et configurer l'utilisation de toute les LEDs connectées au Yocto-Color-V2.

Note sur la backward compatibilité


Afin de maintenir la compatibilité, le Yocto-Color-V2 possède toujours, deux fonctions colorled1 et colorled2 qui contrôle les deux premières LEDs. Cela permet aux applications qui ont étés développés pour le Yocto-Color, de continuer à fonctionner avec le Yocto-Color-V2. Cependant, pour les nouveaux développements, il est recommandé d'utiliser la nouvelle fonction colorLedCluster.

La class YColorLedCluster


Si vous n'avez jamais utilisé de modules Yoctopuce, nous vous recommandons vivement de commencer par la lecture de notre série d'articles pour les débutants. Nous partons du principe que vous savez déjà comment fonctionne nos librairie et que vous êtes capable d'utiliser notre librairie de programmation pour votre langage préféré.

Pour contrôler les LEDs il faut utiliser la classe YColorLedCluster. En fonction du langage de programmation que vous utilisez, vous aurez peut être besoin d'inclure le fichier yocto_colorcluster qui définit cette classe.


from yocto_colorledcluster.py import *
 



Ensuite comme avec toutes nos fonctions il faut utiliser les méthodes FindColorLedCluster ou FirstColorLedCluster pour obtenir l'objet qui permet de contrôler cette fonctionnalité.

Par exemple le code python suivant initialise la variable ledCluster avec l'objet YColorLedCluster du Yocto-Color-V2 qui a le numéro de série YRGBLED2-1234.


ledCluster = YColorLedCluster.FindColorLedCluster('YRGBLED2-1234.colorLedCluster')
 



La configuration


Avant de d'essayer de piloter les LEDs, il faut configurer le nombre de LEDs qui sont connectées au Yocto-Color-V2 ainsi que leur type. Pour ce faire il faut utiliser les méthodes set_activeLedCount et set_ledType.

Depuis le firmware 30526, il est possible d'utiliser des LEDs RGBW avec le Yocto-Color-V2. Il est donc important de configurer le type de LEDs que vous utilisez en même temps que l'on spécifie le nombre de LEDs connectés. Si lors de l'utilisation du Yocto-Color-V2 vous obtenez des patterns de couleurs étrange, c'est probablement que le type de LEDs n'est pas le bon ou que vous avez mixer deux types de LEDs.

Pour finir, comme avec tous les paramètres, il faut les sauver ces paramètres dans la flash à l'aide de la méthode saveToFlash() du module.

Le code suivant, configure le Yocto-Color-V2 pour fonctionner avec 60 LEDs RGB.


ledCluster.set_activeLedCount(60)
ledCluster.set_ledType(YColorLedCluster.LEDTYPE_RGB)
ledCluster.get_module().saveToFlash()
 



Attribuer une couleur à une LED


La méthode set_rgbColor() permet d'affecter une couleur RGB à une ou plusieurs LEDs contiguës. Le premier paramètre est l'offset de départ, le deuxième paramètre est le nombre de LEDs affectées, et enfin le dernier paramètre est la couleur qui doit être utilisée.


# attribue la couleur rouge a la première led
ledCluster.set_rgbColor(0, 1, 0xff0000)
# attribue la couleur bleu de la led 10 à 60
ledCluster.set_rgbColor(10, 50, 0x00ff00)
 



Il est possible d'affecter les valeurs des LEDs en bloc à l'aide de la méthode set_rgbColorArray(). Le premier paramètre est l'offset de départ et le deuxième est le tableau de valeur à utiliser.


# attribue la couleur rouge à la led 10
# attribue la couleur vert à la led 11
# attribue la couleur bleu à la led 12
values = []
values.append(0xff0000)
values.append(0x00ff00)
values.append(0x0000ff)
ledCluster.set_rgbColorArray(10, values)
 



Il est aussi possible de lire la couleur à l'aide de la méthode get_rgbColorArray(). Cette fonction prend en paramètre l'offset de départ et le nombre de LEDs et retourne un tableau avec les couleurs.


# lit la valeur des led 10 à 60
rgbValues = ledCluster.get_rgbColorArray(10, 50)
 



Les transitions


On peut effectuer un fondu vers une couleur à l'aide de la méthodes rgb_move(). Cette méthodes a un argument que la méthode set_rgbColor() de plus qui est la durée de la transition.


# fait un fondu vers la couleur bleu en une seconde pour les les 10 à 60
ledCluster.rgbMove(10, 50, 0x00ff00, 1000)
 



Attentions, cette fonction rend la main immédiatement, et la transition est effectuée en interne par le CPU du Yocto-Color-V2. Donc si deux transitions sont exécutées l'une après l'autre sans attente, seul la deuxième sera réellement exécutées.

Dans le code suivant, la première transition n’aura pas le temps de s'effectuer.


# Code faux! Seul la deuxième transition sera visible.
ledCluster.set_rgbColor(10, 50, 0xff0000, 1000)
ledCluster.set_rgbColor(10, 50, 0x00ff00, 1000)
 



Pour que le code précédent fonctionne il faut ajouter une attente d'une seconde pour le la transition vers le rouge aie le temps de se terminer.


# fait un fondu vers la couleur rouge en une seconde pour les les 10 à 60
ledCluster.set_rgbColor(10, 50, 0xff0000, 1000)
# attend 1 seconde que la transition soit terminée
time.sleep(1)
# fait un fondu vers la couleur bleu en une seconde pour les les 10 à 60
ledCluster.set_rgbColor(10, 50, 0x00ff00, 1000)
 



Le couleurs affiché au démarrage


Toutes les fonctions que nous avons vu changent l'état courant des LEDs, mais il est aussi possible de modifier la couleur par défaut des LEDs. Pour ce faire il faut utiliser la méthode set_rgbColorAtPowerOn() qui fonctionne comme la méthode set_rgbColor mais, au lieu d'appliquer directement la couleur aux LEDs concernées, elle change la valeur par défaut des LEDs. Cette valeur par défaut est la couleur qui va être appliquée dès que le module est alimenté.

Attention, il faut impérativement sauver ces modifications à l'aide de la méthode saveLedsConfigAtPowerOn(), sinon les changements seront perdus.


ledCluster.set_rgbColorAtPowerOn(0, 1, 0xff0000);
ledCluster.set_rgbColorAtPowerOn(10, 50, 0x00ff00);
ledCluster.saveLedsConfigAtPowerOn();
 



L'espace de couleur HSL


Toute les fonctions que vous venons de vous présenter fonctionnent dans un espace de couleur RGB, mais il est aussi possible de travailler avec l'espace de couleur HSL.

Pour chaque fonctions que nous venons de décrire il existe une version HSL:

Couleur RGBCouleur HSL
set_rgbColorset_hslColor
set_rgbColorArrayset_hslColorArray
get_rgbColorArrayget_hslColorArray
rgb_movehsl_move
set_rgbColorAtPowerOnset_hslColorAtPowerOn



Ces méthodes fonctionnent de la même manière que leur version RGB, mais la valeur de la couleur est représenté par 3 bytes qui correspondent la couleur en Teinte, la Saturation et Luminosité (HSL en anglais) au lieux des composantes Rouge,Vert,Bleu.

Les séquences


Dans cette article nous avons parlé uniquement de la programmation "simple" des LEDs. Mais le Yocto-Color-V2 est aussi capable de jouer des animations préprogrammées. Vous pouvez consulter notre article sur le sujet pour plus de détails.

Les programmes d'exemples


Pour toutes les libraires nous avons ajouter un exemple Doc-GettingStarted-Yocto-Color qui utilise ce que nous venons de voir. Vous avez donc maintenant les clefs en main pour débuter l'utilisation de votre Yocto-Color-V2.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.