FLProg + Nextion HMI。第三课



在前面的课程(课程1课程2)我解释了如何绘制接口面板Nextion HMI,如何操作使用Arduino的触摸屏。在本教程中,我将向您展示如何解决使用Nextion HMI面板控制Arduino板的反问题。
在本课中,我们将扩展上一课的项目,添加风扇控制,风扇控制将在温度升高到指定极限以上时打开,并在温度下降到第二极限以下时关闭。这些设置将从面板上进行设置,并存储在Arduino控制器的非易失性存储器中。此外,我们将在面板上进行电灯开关(开关),并通过按钮来打开手电筒(例如,向外星人发出信号)。

上一课的修改方案。手电筒,灯光和风扇将模拟LED。


面板设计也已完成。添加了两页。此外,替换了面板中加载的字体。该面板的项目位于存档中,在文章末尾提供了指向该链接的链接。在上一课的评论中,他们正确地批评了我缺乏设计师才能。我完全同意这一点,因此新页面没有设计,纯功能。
考虑新页面。

管理页面(“ page3”,ID = 3)。


考虑页面上的元素。

  1. 只是文本字段。没什么有趣的。
  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.


用于编辑值的窗口(“ page4”,ID = 4)。

考虑一下其中包含的内容。
  1. 可编辑值的字段。项目参数。

    我们将分别从控制器读取该字段的值,使其为全局值(“ vscope”属性设置为“ global”)。

  2. 值输入按钮。所有这些按钮几乎完全相同,并且在“ Touch Press Event”事件处理程序中的标题和代码不同。当您单击这些按钮之一时,相应的符号将添加到已编辑值字段的当前值。
    每个按钮的“ Touch Press Event”中的代码。
    “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. 按钮清除字段。按下时,将删除字段值。
    “触摸新闻事件”中的代码
    evtemp.txt=""

  4. 按钮删除最后一个字符。
    “触摸新闻事件”中的代码
    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



面板完成后,转到FLProg程序。它还使用上一课中的项目,并对其进行了稍微的修改。项目文件位于归档文件中,在文章末尾提供了指向该文件的链接。
和上一课一样,我将展示现成的电路板,并告诉它们正在发生什么。
董事会7-“灯笼管理”



这里的一切都很简单。块B46-“点击跟踪”(元素库,文件夹“ Nextion HMI Panel”)。在其输出处,它对应于面板上“被按下的事件”和“被按下的事件”事件的受监视按钮或其他元素的状态。该值直接写入与灯相连的输出。使用块编辑器对块进行参数化。



在块编辑器中,选择面板,然后创建一个新页面并在其上写入必要的元素。我在上一课中讲过如何做到这一点。



这样的照片应该证明。



作为按下变量,我们在“ Touch Press Event”按钮中选择将单元写入其中的变量,而从“ Touch Release Event”按钮中选择变量作为释放变量。

第8板-“灯光控制”。



同样非常简单的板子。在这里,我们使用块B47-“获取参数”(元素库->“ Nextion HMI Panel”文件夹->“ Elements”文件夹)读取开关的位置。然后将此值直接发送到连接到照明设备的输出单元。使用块编辑器对块进行参数化。



为了减少控制器上的负载,我们将每秒请求一次开关的状态。

第9板-“编辑参数结束。”
在此板上,我们将处理参数编辑页面上“完成”按钮的单击。



使用块B48-“跟踪点击”(元素库,文件夹“ Nextion HMI Panel”),我们确定按下的时刻。在该块的编辑器中,我们将创建第4页,并在其中填充我们感兴趣的元素。



并设置块。



使用块B49-“ Rtrig”(元素库,文件夹“ Triggers”),在按下“ Finish”按钮时选择信号的前沿,并将其写入变量“ End edit”。
同样在这方面,我们将使用块B54-“获取参数”(元素库->文件夹“ Nextion HMI Panel”->文件夹“ Elements”)读取存储已编辑字段标识符的变量值。阻止设置。



我们将获得的值放入变量“已编辑字段的编号”。
同样,我们将使用B50块-“获取参数”(元素库->“ Nextion HMI Panel”文件夹->“ Elements”文件夹)直接从文本字段中读取新值。阻止设置。



我们使用B51块-“字符串转换”(元素库,文件夹“类型转换”)将字符串中的新值转换为Float格式的数字。阻止设置。



我们使用块B52-“ MUL(*)”(元素库,文件夹“ Mathematics”)将数字乘以10,使用块B53-“将浮点数转换为整数”(元素库,文件夹“类型转换”)将类型更改为Integer。并放入变量“新值”。

第10板-“处理值的编辑结果”



使用B55-“比较器”块(元素库,“比较”文件夹),我们确定要编辑哪个字段,并根据结果,将“新值”变量中的动量按“编辑结束”变量中的动量写入两个变量之一,在“关闭风扇x10的设定点”或“打开风扇x10的设定点”中。同样出于同样的冲动,我们使用块B58-“转到页面”(元素库,文件夹“ Nextion HMI Panel”->“ Page”文件夹),将面板命令转到控制页面。阻止设置。



董事会11-“将设定值写入面板和EEProm”



使用块B59-“用于更改数量的检测器”(元素库,文件夹“ Basic elements”),我们确定通过变量“ Fan On Setpoint x10”更改值的事实。在“值”输入处更改值时,在块输出处会形成一个短脉冲。通过该脉冲,该值被写入控制器的非易失性存储器。可以使用块B65-“写入EEPROM”(元素库,文件夹“ EEPROM”)完成此操作。使用块编辑器配置块。



在将变量写入EEPROM之前,您需要在其中创建变量。为此,在块编辑器中单击“创建”按钮。打开用于创建变量的窗口。



在其中,我们设置变量的名称及其类型。单击“就绪”按钮后,该块将附加到该变量。



同样,通过有关变量更改的信号,使用块B61-“ DIV(/)”(元素库,文件夹“ Mathematics”)将其值除以等于类型10的Float类型的常数,并使用块B62-“字符串转换”将其转换为字符串。 (元素库,文件夹“类型转换”),并使用块B63-“设置参数”(元素库,文件夹“ Nextion HMI Panel”->“ Elements”文件夹)发送到相应字段中的面板。此块的设置。



变量“风扇关闭设置x10”的控制逻辑是相同的,块设置如下。

B65区块。



B68区块。



现在,我们将确保在控制器启动时从EEPROM读取设置。为此,请在项目的顶部插入一块新板,以便首先执行其上的电路。为此,请选择前景,然后单击“在所选卡片的前面插入一张卡片”按钮。



让我们将新板命名为“从EEPROM读取设置”。 电路板

1.



使用模块72-“ Rtrig”(元素库,文件夹“ Triggers”),当控制器打开时,我们将产生一个短脉冲。根据该脉冲,将从非易失性存储器读取的值记录在变量“用于打开风扇x10的设定点”和“用于关闭风扇x10的设定点”中。使用块B71和B73-“从EEPROM读取”(元素库,文件夹“ EEPROM”)会发生这种情况。使用块编辑器对块进行参数化。



块B71的参数。



通过按“选择”按钮在EEPROM中选择读取变量。变量选择窗口打开。



块B73的参数。



好吧,项目的最后一块板。

电路板12。“风扇控制”



如果当前温度超过设置值“风扇在设定值x10上”,则B69比较单元将检测到该温度,并将触发器B70设置为状态1,并且当温度下降到设置值“风扇x10偏离设定值”以下时,将由块B71检测到。将触发器B70设置为状态0。触发器状态提供给与风扇关联的输出单元。

存档项目源代码。

影片示范

Source: https://habr.com/ru/post/zh-CN392865/


All Articles