IHM FLProg + Nextion. Leçon 3



Dans les leçons précédentes ( leçon 1 , leçon 2 ), j'ai expliqué comment dessiner l'interface d'un panneau IHM Nextion et comment contrôler un panneau à l'aide d'Arduino. Dans ce didacticiel, je vais vous montrer comment résoudre le problème inverse du contrôle de la carte Arduino à l'aide du panneau IHM Nextion.
Dans la leçon, nous développerons le projet de la leçon précédente, ajouterons le contrôle du ventilateur, qui s'activera lorsque la température dépassera la limite spécifiée et s'éteindra lorsque la température descendra en dessous de la deuxième limite. Les paramètres seront définis à partir du panneau et stockés dans la mémoire non volatile du contrôleur Arduino. De plus, nous allons faire un interrupteur d'éclairage (marche-arrêt) sur le panneau et un bouton avec lequel nous allumerons la lampe de poche (par exemple, pour donner un signal aux extraterrestres).

Schéma modifié de la dernière leçon. La lampe de poche, la lumière et le ventilateur simuleront les LED.


La conception du panneau a également été finalisée. Deux pages ajoutées. De plus, la police chargée dans le panneau a été remplacée. Le projet du panel est dans les archives, dont un lien est donné à la fin de l'article. Dans les commentaires de la dernière leçon, ils m'ont critiqué à juste titre pour le manque de talent de designer. Je suis entièrement d'accord avec cela, donc les nouvelles pages n'ont pas de design, de pure fonctionnalité.
Considérez les nouvelles pages.

Page de gestion («page3», ID = 3).


Considérez les éléments de la page.

  1. Juste des champs de texte. Rien d'intéressant.
  2. . , . . . .

    , ( “vscope” “global”). . “Touch Press Event” .

    4 .
    page4.evtemp.txt=onV.txt

    4 , .
    page4.varN.val=0

    .
    page page4


  3. . . .

    “Touch Press Event”.

    .
    page4.varN.val=1


  4. . . .

    “Touch Press Event”.


  5. (“Dual-state button”) – .
    .

    , ( “vscope” “global”). ( “sta” “image”). “pic0” 0 “pic1” 1.

  6. (“Button”) – . .

    . , . , Arduino UART ( , ). (7 8). , , ( ). (“Touch Press Event”) .

    (“Touch Release Event”) .

    FLProg.


Fenêtre d'édition des valeurs («page4», ID = 4).

Considérez ce qui y est inclus.
  1. Champ de valeur modifiable. Paramètres de l'élément.

    Nous allons lire la valeur de ce champ à partir du contrôleur, respectivement, le rendre global (l'attribut "vscope" est défini sur "global").

  2. Boutons de saisie de valeur. Tous ces boutons sont presque identiques et diffèrent par l'inscription et le code dans le gestionnaire d'événements «Touch Press Event». Lorsque vous cliquez sur l'un de ces boutons, le symbole correspondant est ajouté à la valeur actuelle du champ de la valeur éditée.
    Le code dans le «Touch Press Event» pour chacun des boutons.
    “0”
    evtemp.txt=evtemp.txt+"0"

    “1”
    evtemp.txt=evtemp.txt+"1"

    “2”
    evtemp.txt=evtemp.txt+"2"

    “3”
    evtemp.txt=evtemp.txt+"3"

    “4”
    evtemp.txt=evtemp.txt+"4"

    “5”
    evtemp.txt=evtemp.txt+"5"

    “6”
    evtemp.txt=evtemp.txt+"6"

    “7”
    evtemp.txt=evtemp.txt+"7"

    “8”
    evtemp.txt=evtemp.txt+"8"

    “9”
    evtemp.txt=evtemp.txt+"9"

    “.”
    evtemp.txt=evtemp.txt+"."


  3. Bouton pour effacer le champ. Lorsque vous appuyez dessus, la valeur du champ est supprimée.
    Code dans le «Touch Press Event»
    evtemp.txt=""

  4. Bouton pour supprimer le dernier caractère.
    Code dans le «Touch Press Event»
    evtemp.txt=evtemp.txt-1

    . . . .

  5. .
    , (“endPress” “ endRel”) .
    “Touch Press Event”
    page4.endPress.val=1

    “Touch Release Event”
    page4.endRel.val=1


  6. . .
    “Touch Press Event”
    page page3



Une fois le panneau terminé, accédez au programme FLProg. Il utilise également le projet de la dernière leçon, légèrement modifié. Le fichier du projet est dans l'archive, un lien vers lequel est donné à la fin de l'article.
Comme dans la dernière leçon, je vais montrer les circuits imprimés prêts à l'emploi et dire ce qui se passe sur eux.
Tableau 7 - «Gestion des lanternes»



Ici, tout est simple. Bloc B46 - «Click Tracking» (bibliothèque d'éléments, dossier «Nextion HMI Panel»). A sa sortie, il correspond à l'état du bouton surveillé ou autre élément des événements «Touch Press Event» et «Touch Release Event» sur le panneau. Cette valeur est directement écrite dans la sortie liée à la lampe. Le bloc est paramétré à l'aide de l'éditeur de blocs.



Dans l'éditeur de blocs, sélectionnez le panneau, puis créez une nouvelle page et écrivez-y les éléments nécessaires. J'ai expliqué comment procéder dans une leçon précédente.



Une telle image devrait se révéler.



En tant que variable de pression, nous sélectionnons la variable dans laquelle nous écrivons l'unité dans le bouton «Touch Press Event», et comme variable de libération, la variable du bouton «Touch Release Event».

Tableau 8 - "Light Control".



Même planche très simple. Ici, nous lisons la position du commutateur à l'aide du bloc B47 - «Get parameter» (bibliothèque d'éléments -> dossier «Nextion HMI Panel» -> dossier «Elements»). Cette valeur est ensuite envoyée directement à l'unité de sortie, attachée à l'éclairage. Le bloc est paramétré à l'aide de l'éditeur de blocs.



Pour réduire la charge sur le contrôleur, nous demanderons une fois par seconde l'état de l'interrupteur.

Tableau 9 - «Fin des paramètres d'édition».
Sur cette carte, nous traiterons le clic du bouton «Terminer» sur la page d'édition des paramètres.



A l'aide du bloc B48 - «Suivi des clics» (bibliothèque d'éléments, le dossier «Nextion HMI Panel») nous déterminons le moment de pressage. Dans l'éditeur de ce bloc, nous allons créer la page 4 et la remplir avec les éléments qui nous intéressent.



Et configurez le bloc.



A l'aide du bloc B49 - «Rtrig» (bibliothèque d'éléments, dossier «Déclencheurs»), sélectionnez le bord d'attaque du signal lorsque vous appuyez sur le bouton «Terminer» et écrivez-le dans la variable «Fin d'édition».
Sur ce front également, nous lirons la valeur de la variable stockant l'identifiant du champ édité à l'aide du bloc B54 - «Get Parameter» (bibliothèque d'éléments -> dossier «Nextion HMI Panel» -> dossier «Elements»). Bloquer les paramètres.



Nous mettons la valeur obtenue dans la variable «Numéro du champ édité».
Et par la même impulsion, nous lirons directement la nouvelle valeur du champ de texte en utilisant le bloc B50 - «Get Parameter» (bibliothèque d'éléments -> dossier «Nextion HMI Panel» -> dossier «Elements»). Bloquer les paramètres.



Nous transformons la nouvelle valeur de la chaîne en un nombre au format Float en utilisant le bloc B51 - "Conversion de chaîne" (bibliothèque d'éléments, dossier "Type Conversion"). Bloquer les paramètres.



Nous multiplions le nombre par 10 en utilisant le bloc B52 - "MUL (*)" (bibliothèque d'éléments, dossier "Mathématiques"), changez le type en Entier en utilisant le bloc B53 - "Convertir Float en Entier" (bibliothèque d'éléments, dossier "Type Conversion") et insérez la variable "Nouvelle valeur".

Tableau 10 - "Traitement des résultats de la modification de la valeur"



A l'aide du bloc B55 - «Comparateur» (bibliothèque d'éléments, dossier «Comparaison») nous déterminons quel champ a été édité, et en fonction du résultat, écrivez la valeur de la variable «Nouvelle valeur» par le momentum de la variable «Fin d'édition» dans l'une des deux variables, dans «Point de consigne pour l'arrêt du ventilateur x10» ou dans «Point de consigne pour l'allumage du ventilateur x10». Toujours par la même impulsion, nous donnons la commande du panneau pour aller à la page de contrôle en utilisant le bloc B58 - «Aller à la page» (bibliothèque d'éléments, dossier «Nextion HMI Panel» -> dossier «Page»). Bloquer les paramètres.



Tableau 11 - «Écriture des valeurs de réglage sur le panneau et EEProm»



A l'aide du bloc B59 - «Détecteur de modification du nombre» (bibliothèque d'éléments, dossier «Eléments de base»), nous déterminons le fait de modifier la valeur par la variable «Fan On Setpoint x10». Une impulsion courte se forme à la sortie du bloc au moment de la modification de la valeur à l'entrée «Value». Par cette impulsion, la valeur est écrite dans la mémoire non volatile du contrôleur. Cela peut être fait à l'aide du bloc B65 - «Ecrire dans l'EEPROM» (bibliothèque d'éléments, dossier «EEPROM»). Le bloc est configuré à l'aide de l'éditeur de blocs.



Avant d'écrire une variable dans l'EEPROM, vous devez la créer à cet endroit. Pour ce faire, cliquez sur le bouton "Créer" dans l'éditeur de blocs. La fenêtre de création d'une variable s'ouvre.



Nous y définissons le nom de la variable et son type. Après avoir cliqué sur le bouton prêt, le bloc sera attaché à cette variable.



De plus, par un signal de changement de variable, sa valeur est divisée par une constante de type Float égale à 10 en utilisant le bloc B61 - "DIV (/)" (bibliothèque d'éléments, dossier "Mathématiques"), se transforme en chaîne en utilisant le bloc B62 - "Conversion de chaîne" (bibliothèque d'éléments, dossier «conversion de type»), et envoyée au panneau dans le champ correspondant à l'aide du bloc B63 - «Définir paramètre» (bibliothèque d'éléments, dossier «Nextion HMI Panel» -> dossier «Éléments»). Paramètres de ce bloc.



La logique de contrôle par la variable «Fan off setting x10» est la même, les réglages de bloc sont les suivants.

Bloc B65.



Bloc B68.



Nous allons maintenant nous assurer que les paramètres sont lus à partir de l'EEPROM au moment où le contrôleur démarre. Pour ce faire, insérez une nouvelle carte tout en haut du projet afin que le circuit qui s'y trouve soit exécuté en premier. Pour ce faire, sélectionnez le premier plan et cliquez sur le bouton «Insérer une carte devant celle sélectionnée».



Appelons la nouvelle carte «Lecture des paramètres de l'EEPROM». Carte

1.



En utilisant le bloc Â72 - «Rtrig» (bibliothèque d'éléments, dossier «Déclencheurs»), nous créons une impulsion courte lorsque le contrôleur est allumé. Selon cette impulsion, les valeurs lues dans la mémoire non volatile sont enregistrées dans les variables «Consigne pour allumer le ventilateur x10» et «Consigne pour éteindre le ventilateur x10». Cela se produit à l'aide des blocs B71 et B73 - «Lecture depuis l'EEPROM» (bibliothèque d'éléments, dossier «EEPROM»). Les blocs sont paramétrés à l'aide de l'éditeur de blocs.



Paramètres du bloc B71.



La variable lue est sélectionnée dans l'EEPROM en appuyant sur le bouton "Sélectionner". La fenêtre de sélection des variables s'ouvre.



Paramètres du bloc B73.



Eh bien, le dernier conseil d'administration du projet.

Carte 12. «Contrôle du ventilateur»



Si la température actuelle a dépassé le paramètre «Point de consigne du ventilateur x10», cela sera détecté par l'unité de comparaison B69 et mettre le déclencheur B70 à l'état 1, et lorsque la température descendra en dessous du paramètre «Point de consigne d'arrêt du ventilateur x10», elle sera détectée par le bloc B71, qui met le déclencheur B70 à l'état 0. L'état de déclenchement est fourni à l'unité de sortie associée au ventilateur.

Archive avec les codes sources des projets.

Démo vidéo

Source: https://habr.com/ru/post/fr392865/


All Articles