![Arduino开发实战指南:智能家居卷](https://wfqqreader-1252317822.image.myqcloud.com/cover/112/703112/b_703112.jpg)
1.4.3 Blocks Editor界面设计
接下来,需要为组件添加行为,使程序能够对一些动作(比如说触摸屏幕)做出反应(如变换图像、发出声音等)。单击Blocks按钮进入Blocks Editor界面,在左侧列表中找到需要编写响应的组件;单击它,在它的右侧会产生该组件可以创建的事件列表类型。选择一种需要的事件块并拖到右边的编辑区,为事件编写相应的内容。
实现步骤如下:
1.对屏幕进行初始化
在没有完成“搜索蓝牙”之前,“连接蓝牙”按钮处于非活动状态,即不可点击。
1)点击Blocks Editors界面左侧的Screen1选项卡,在Screen1右边会弹出一个列表,选择Screen1.Initialize,并拖曳到右侧空白编辑区。
2)点击Screen1选项卡,选择Button2,从Button2右边列表中选择Button2.Enabeld,并拖曳到Screen1.Initialize框内。
3)点击Built-In选项卡,选择Logic,从Logic右边列表中选择false,并拖曳到右边Button2.Enabeld的槽口处连接在一起,如图1.20所示。
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/17a-i.jpg?sign=1738886446-A6ntNcKcQs5Q3HPlnSBSwIp2aTHQEXMf-0-0e0116e875bbf785b18aeefe3481c7ce)
图1.20 Screen1初始化
2.“搜索蓝牙”键设计
利用ListPicker组件实现“搜索蓝牙”键展开功能,将手机已存储配对过的设备做成一个列表供我们选择。
定义一个全局变量DeviceMac,用来存放选择后的蓝牙Mac地址。
1)从Built-In选项卡找到Variables,选择initialize.global,并拖曳到右边编辑区,并将变量名name修改为DeviceMac。
2)从Built-In选项卡中找到Text;选择text,拖曳到右边DeviceMac的槽口,将text修改为ok,完成DeviceMac初始化赋值,如图1.21所示。
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/18a-i.jpg?sign=1738886446-JUhMXaC6VkdaS2EXqc4wwv0onqmXNcCw-0-3400aeaf1c285f794beb26a54d5de216)
图1.21 定义一个全局变量DeviceMac
在选择蓝牙前,ListPicker组件需要先列出手机配对过的设备清单。
模块需求如表1.1所示。
表1.1 “搜索蓝牙”按钮选择蓝牙前行为定义列表
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/18b-i.jpg?sign=1738886446-LoOLaLlxW1awsl0mFbS18o5GRMhOzit8-0-0a0822331c4a0984663c129657190c2b)
在选择蓝牙后,DeviceMac保存从列表中选择的Mac地址,并将“连接蓝牙”按钮激活。
模块需求如表1.2所示。
表1.2 “搜索蓝牙”按钮选择蓝牙后行为定义列表
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/18c-i.jpg?sign=1738886446-ogBdVT73zU7qUXacMf6tCwqSQkbC52xq-0-46daabec63f0eee8387cf4d741e521ad)
模块组装后如图1.22所示。
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/19a-i.jpg?sign=1738886446-3vwTy4VRsfLLT0Ck4ClenRBtzetqBUsb-0-fb17a53a5c1e8d2174d9fcc96f318c6c)
图1.22 “搜索蓝牙”键设计
3.“连接蓝牙”键设计
设计思路如图1.23所示。
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/19b-i.jpg?sign=1738886446-4m9csdTX4NgcqPC60ITURVfTYKT7cY2X-0-54e6d8d415cf1f54bff646fb22cff68e)
图1.23 “连接蓝牙”键设计逻辑框图
模块需求如表1.3所示。
表1.3 “连接蓝牙”按钮行为定义模块需求列表
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/19c-i.jpg?sign=1738886446-8F3YoWA1qkXblwYX89sLbwesbfGtj1aV-0-d6279920e6473780a33f36f2ee5ccdb0)
“连接蓝牙”键完整设计如图1.24所示。
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/20b-i.jpg?sign=1738886446-Kyh1rawUDjJuGrpPIkyj28n3mqhROi1O-0-42872afb6fbfedaad3e7524f5adb2b80)
图1.24 “连接蓝牙”键设计
4.“灯泡按钮”键设计
设计思路:
1)点击熄灭灯泡的图案时,把熄灭灯泡的图案换成点亮灯泡的图案。在Button1.Click框内把Button1.Image修改为light2.png,并通过蓝牙向Arduino主控板发送命令数值16。
2)再次点击时,把点亮灯泡的图案换成熄灭灯泡的图案。在Button1.Click框内把Button1.Image修改为light1.png,并通过蓝牙向Arduino主控板发送命令数值17。
模块需求如表1.4所示。
表1.4 “灯泡按钮”行为定义模块需求列表
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/21a-i.jpg?sign=1738886446-W9Md3ikCvOeaatsQuj2w3rktu03WeR3O-0-d0313d7a93b673b765c8abda432e5ab1)
“灯泡按钮”键完整设计如图1.25所示。
![](https://epubservercos.yuewen.com/17C1CB/3590871404580101/epubprivate/OEBPS/Images/21b-i.jpg?sign=1738886446-CuaBkaUL8KoMRzE3QuwsOlTDzmW8XYz6-0-b5292bc85deee2f335a6e6869cbf8607)
图1.25 “灯泡按钮”键设计