Cadrans et galvanomètres sur Nextion calculés par Arduino |
Maj : 24/06/19
Abstract :
Résumé : |
Ce postulat étant posé, vous savez poser une aiguille évoluée quelconque sur l’affichage du Nextion.
La première étape est de choisir un fond d’écran représentant un joli cadran gradué quelconque, que vous pourrez obtenir d’après une photo (comme je l’ai fait pour la Rolex), ou avec des applications spécialisées de création d’afficheurs gradués qui se trouvent sur Internet.
Toute la beauté de l’écran dépend de vos talents artistiques, mais pas d’angoisse, vous pourrez changer à tout moment de fond suivant votre inspiration une fois votre logiciel terminé, il suffira de changer les 5 paramètres fondamentaux nécessaires et suffisants cités plus loin.
Vous trouverez 8 images d’exemples pour vous donner des idées de ce que vous pouvez imaginer parmi une infinité de cadrans possibles…
Il est intéressant de profiter du bon écran tactile pour rajouter des boutons et changer radicalement d’affichage et même d’alterner ou coupler une aiguille analogique avec un panneau numérique, cela ne présente aucune difficulté de programmation, cela ne fait appel qu’au talent de graphiste.
Exceptionnellement ces images en 300*300 ne s’agrandissent pas, cherchez avec votre moteur dans l’immensité du Web le design qui vous inspire !
Votre fond d’écran peut être de deux types :
Fond centré
Comme pour la Rolex, il faudra alors dans un premier temps tracer deux diagonales afin que le centre soit placé au pixel exact, puis des cercles pour bien vérifier que le cadran n’est pas déformé.
Ne perdez pas trop de temps dans cette étape, vous affinerez plus tard une fois que le logiciel sera au point.
Une fois tout calé, c’est très simple, les coordonnées du centre étant évidemment résolution H/2 et résolution V/2, soit X0 = 400, Y0 = 240.
L’aiguille ne devra pas déborder, donc son rayon extrême sera inférieur à résolution V/2 = 240
Fond décalé
Par exemple comme un contrôleur universel analogique, mais le centre peut même être à l’extérieur de l’écran, centré en X ou pas.
Le grand principe est toujours le même !
Pour chaque nouvelle position d’aiguille, afficher un nouveau fond plein écran (instantané) et envoyer les commandes pour superposer l'aiguille.
Une fois le fond choisi, posez-le et dessinez d’abord tous les rayons de degré en degré et divers cercles avant de commencer par la jolie aiguille, pour tout bien centrer et positionner les minima et maxima de l’échelle sur les butées.
Pour le cas de d’axe décalé, il faudra un peu tâtonner pour optimiser les coordonnées du centre.
Ceci fait vous connaissez tout le nécessaire et suffisant, le centre, le rayon et les butées angulaires :
X0, Y0, Rmax, AlphaMin et AlphaMax
Commencez par l’aiguille minimaliste que vous bougerez par un potentiomètre sur une entrée analogique de l’Arduino (une seule commande ligne à envoyer) puis ensuite passer à l’aiguille élaborée.
Tout est possible, même représenter un ressort spiral au centre pour copier celui d’un galvanomètre, rajouter en incrustation un affichage digital, des leds, des commutateurs, il n’y a pas d’autre limite que le temps d’envoi de nombreuses commandes à 115 kb.
Si vous devez afficher des valeurs qui changent brutalement, afin de rester réaliste il faut simuler l’inertie de l’aiguille mécanique avec ses dépassements et oscillations.
Cela ne pose aucun problème de faire des paliers très fins pour imiter les mouvements analogiques, il suffit de faire passer les données par un filtre passe-bas numérique.
Cela est strictement équivalent à un filtre analogique résistance + capacité, avec son équivalence Tau = R*C en numérique.
J’utilise systématiquement ce type de filtrage pour toutes mes acquisitions de capteurs en lui adjoignant un algorithme d’élimination des valeurs aberrantes.
Le facteur d’amortissement se règle avec un seul coefficient et l’occupation mémoire est dérisoire.
Vous en trouverez le principe et tous les détails dans cette page Filtrage par
pondération temporelle
Tous les détails et logiciels sont dans cette page à jour au : 220511 |