Pages

samedi 14 avril 2018

Recevoir une donnée sur un Nextion

Dans l'article : https://sti2d-sin-isn.blogspot.fr/2018/03/creer-un-bouton-et-allumer-une-del-avec.html, on a pu voir comment envoyer un ordre simple d'un Nextion vers une carte Arduino.
Maintenant, découvrons comment recevoir une donnée.
Ici, nous prendrons un potentiomètre sur une entrée analogique à titre d'exemple.

1) Préparation de l'IHM :

Nous allons placer deux cadres, un texte et un nombre avec les propriétés suivantes :



L'objet t1 sera un texte fixe, constant. Par contre, n0 va afficher la valeur lue, il va donc changer régulièrement.
Pour le moment, c'est suffisant, on peut téléverser l'IHM. (https://sti2d-sin-isn.blogspot.fr/2018/03/televerser-une-ihm-vers-un-ecran-nextion.html)

2) Le programme Arduino

On reprend le même programme que l'article précédent et on ajoute une variable :
Puis on ajoute ce code juste après <chaine="">

Détail :
La fonction concat permet de concaténer deux éléments, c'est à dire que le second est mis à la fin du premier. On accole dont la valeur lue au potentiomètre au texte n0.val=
Ce n'est pas fini..... maintenant, toute cette nouvelle chaine (presque complète) doit être envoyée... C'est le rôle de la fonction "transfert" :


Cette fonction se met en dehors du loop, ou, mieux encore, dans un nouvel onglet, soit de l'IDE Arduino, soit comme ici, dans VS :

Résultat :



 😄Pour le FUN :

Vu que l'on peut changer les propriétés des éléments, on va changer la couleur du texte en fonction de la valeur du potentiomètre :

Ici, on voit les valeurs de quelques couleurs :


Maintenant, faisons en sorte que cela change avec le programme :








 Prochain article sur le même sujet : le vu-mètre.....



Mise à jour le 21 novembre 2018 : 

Après plusieurs essais, la fonction "transfert" ne semble pas forcément nécessaire. Une commande comme celle-ci peut s'avérer suffisante : 

  mySerial.print("n0.val=100");=> bien entendu, le 100 peut être récupéré par un capteur mais casté en String
  mySerial.write(0xFF); mySerial.write(0xFF); mySerial.write(0xFF);