Il y a quelques temps, nous vous avons montré comment lire efficacement la valeur des capteurs Yoctopuce avec Excel, en utilisant un serveur RTD écrit en C# .NET. Cette solution fonctionnant plutôt bien, on nous a demandé si il était possible d'étoffer notre code d'exemple pour gérer d'autres modules Yoctopuce. Comme c'est Noël, on a bien voulu faire un petit effort :-)
Nous avons fait plusieurs améliorations au code d'exemple de serveur RTD pour Excel.
Support du Yocto-Knob
Bien qu'étant un capteur, le Yocto-Knob n'a pas de data logger et n'est (pour des raisons historiques) pas utilisable avec la classe YSensor. Il n'était donc pas possible de l'utiliser avec notre première version du serveur RTD. Nous avons maintenant rajouté le support de la classe YAnButton dans l'exemple, et il est ainsi possible de lire un potentiomètre ou un phototransistor par exemple sous Excel, à l'aide de la même fonction YSensorValue(). Par exemple, si on définit une cellule comme
=YSensorValue("YBUTTON1-1102E.anButton3")
sa valeur reproduira à chaque instant la valeur lue sur le potentiomètre 3, entre 0 et 1000.
Support des relais
Nous avons rajouté une fonction YRelayState() qui permet de contrôler depuis Excel les relais Yoctopuce. Comme pour les capteurs, le relais peut être référencé soit par son identifiant matériel unique, soit par le nom logique qui lui a été attribué. La valeur du nouvel état peut être est soit "A", soit "B". La fonction retourne l'état sélectionné. Par exemple, pour commuter le relais en fonction de la valeur de la cellule B2, on peut utiliser:
=YRelayState("LightSwitch";IF(B2>500;"B";"A"))
Si la fonction est appelée avec un seul argument, l'état courant du relais est retourné, sans le modifier:
=YRelayState("LightSwitch")
Support des LEDs RGB
De la même manière, la fonction YColorLedRGB() permet piloter un Yocto-Color ou un Yocto-PowerColor directement depuis Excel. La valeur passée en argument est la valeur RGB, soit sous forme de chaîne hexadécimale (comme un code de couleur HTML), soit chaque composante séparée sous forme numérique. Par exemple la formule suivante allume la LED en une intensité de vert dépendant de la valeur de B2 dans l'intervalle 0...1000 :
=YColorLedRGB("indicator";0;ROUND(B2*255/1000;0);0)
Support du Yocto-Servo
Une dernière fonction YServoPosition() permet de piloter les cinq canaux du Yocto-Servo. La position donnée en argument est un entier entre -1000 et 1000. Ainsi, pour choisir une position en fonction de la cellule B2 dans l'intervalle 0...1000, on peut faire:
=YServoPosition("SERVORC1-08431.servo2";2*B2-1000)
Autres améliorations
Le précédent code d'exemple ouvrait automatiquement la fenêtre de console à chaque message, ce qui n'était pas très pratique à l'utilisation. Ceci a été changé, la fenêtre s'affiche maintenant uniquement à la demande en utilisant le menu "Yoctopuce Sensor RTD Server". Ce même menu offre maintenant aussi une meilleure granularité pour le choix de la fréquence de rafraîchissement du serveur RTD.
Une petite démonstration
Pour conclure, voici un petit exemple d'utilisation fait sur un coin de table, démontrant les possibilités que ce petit plug-in ouvre. Comme Excel recalcule automatiquement les cellules en fonction des dépendances, si un appel à YRelayState, YColorLedRGB ou YServoPosition référence une valeur retournée par YSensorValue, elle sera ré-exécutée à chaque changement de la valeur mesurée. On peut ainsi créer un petit automatisme rien qu'avec une simple feuille Excel...
Le plug-in peut être chargé ici. Vous trouverez les instructions d'installation dans le précédent article. Bonnes Fêtes !