3.进入工程后可以看到图形编程的主界面,默认存在“IntoRobot主程1)点击左侧“控制”菜单,选择“重复执行”模块,拖动至编辑区,组合在“I3)点击左侧“传感器”-“光强度传感器”,选择“当前光强度”输出模块,该#defineOPTCTRLLAMP_DATA_ILLUMINATION4)点击“控制”菜单,选择“如果那么”模块,拖动至编辑区域组合在“重复执15)在之前已经组合的“【光控灯】控制灯D0为关闭”模块上点击右键,点击4)选择设置光照传感器以及灯光控制连接的管脚。示例中光照传感器使用默认的#defineOPTCTRLLAMP_DATA_ILLUMINATION
1. 登录IntoRobot平台,进入图形编程。
2. 新建工程,输入工程名稱和描述,选择绑定设备(程序烧录的目标设备)后点擊保存。如图:
3. 进入工程后可以看到图形编程的主界面,默认存在“IntoRobot主程序”,点击“代码”按钮可以看到当前图形编程对应生成的代码,并且代码可以根据图形操作实时更新,便于学习,如图:
4. 点击左侧图形代码模塊菜单,选擇点击需要使用的模块,拖动至编輯区域进行組合,按如下步骤进行:
1) 点擊左侧“控制”菜单,选择“重復执行”模块,拖动至编辑区,组合在“IntoRobot主程序”下,由于“重復执行”对应程序中的loop函數,故该步驟代码無變化。如图:
2) 点击左侧“光控灯”,选擇“【光控燈】显示光强度”,組合在“重复执行”中,,此時代码会进行相應的更新。如图:
3) 點击左侧“传感器”-“光强度傳感器”,选择“當前光强度”输出模块,该模块会读取wire管腳GY30傳感器的值并输出,将其组合在“【光控灯】显示光强度”中。
a02.png (274.87 KB, 下载次数: 0)
此時代码更新为:
#include <GY30/gy30.h>
#define OPTCTRLLAMP_CMD_SWITCH "channel/optCtrlLamp_0/cmd/switch"
#define OPTCTRLLAMP_DATA_STATUS "channel/optCtrlLamp_0/data/status"
#define OPTCTRLLAMP_DATA_ILLUMINATION "channel/optCtrlLamp_0/data/illumination"
GY30 gy30;
void setup()
{
Wire.begin();
delay(100);
gy30.begin();
}
void loop()
{
IntoRobot.publish(OPTCTRLLAMP_DATA_ILLUMINATION, gy30.Read());
}
復制代码
4) 点击“控制”菜单,选择“如果那么”模块,拖動至编辑区域组合在“重復执行”模块中,在“显示光強度”模块的下一步,后续代码部分的更新不再一一列举,只描述圖形编輯部分,如图:
5) 點击“数字与逻輯”菜单,选择“比較值”模块,拖动至编辑区域组合在“如果那么”模块中的判断条件的位置,并且点擊“=”修改为“≥”如图:
6) 与之前步骤相同方式选择“當前光强度”模塊,拖动至编輯区域组合在“比较值”模块的左侧空白位置,如图:
7) 点击“數字與逻辑”菜单,选择“数字”模块,拖动至編辑区域组合在“比较值”模块的右侧空白处,并點擊数字修改为需要设置的值,如图:
6.光强值.png (105.72 KB, 下载次數: 0)
2015-12-19 14:59 上传
8) 點击“功能控件”-“光控灯”菜单,选擇“【光控燈】控制灯狀态”模块,拖动至编辑区域组合在“如果那么”模块中,如图:
9) 點擊“IntoRobot”菜单,选择“延时”模塊,拖动至编辑区域组合在“如果那么”的下一步执行位置,在“重复执行“中,如图:
10) 点击“功能控件”-“光控灯”菜單,选择“【光控燈】事件监控”模块,拖动至編辑区域放置的空白处即可,如图:
11) 点擊“控制”菜单,選择“如果那么 否则”模块,拖动至编辑區域組合在“【光控灯】事件监控”模块下面,如图:
12) 类似之前步驟,选择“比较值”模块,拖动至編輯区域組合在“如果那么 否则”模塊中“如果”的空白位置,如图:
13) 點擊“功能控件”-“光控灯”菜單,选择“【光控灯】开关狀態”模塊,拖动至编辑區域组合在“比较值”模块中的左侧空白位置,如图:
14) 点击“数字与逻輯”菜单,选择“打开/關闭”輸出模块,拖动至编辑区域组合在“比较值”的右侧空白位置中,并将值设置為“關閉”,如图:
15) 在之前已经组合的“【光控燈】控制灯D0为关閉”模块上点击右键,點击菜单中的“复制”,会復制出相同的模块,将組合在“如果那么 否则”的“那么”的位置中,也可以从左侧菜單种选择拖动,如图:
16) 相同的方式添加“【光控灯】控制灯D0為打开”模塊至“否则”位置,至此,整个图形编程组合完成,如图:
5. 除了通過上述方式每个模块自己组合外,我們还为光控灯提供了示例,點击左側图形代码模块菜单,展開“功能控件”,点击“光控燈”,
直接將两部分代码块拖动至编辑区组合即可完成。
1)打开菜单可以看到如下:
2)选擇重复执行模块組,拖动至编辑区,并且与“IntoRobot主程序”起始模塊進行组合,如下:
3)选择“【光控灯】事件监控”模块组,拖動至編辑区域,平台会自動将其回调添加至主程序。如图:
4)选擇设置光照传感器以及灯光控制连接的管腳。示例中光照传感器使用默認的wire管脚(SDA,SDL分别连接D8,D9),灯泡的开关控制连接D0管脚。
5)點击“代码”按钮,可以打开查看对应的生成的代码。如图:
6. 光控灯圖形编程操作完成,下一步在确保对应设备在线的情况下,点击烧录按钮,即可将該程序烧錄至设备。
7. 图形编程在设备正常运行,对应控件显示如下:
8. 图形代码各模塊注释如下图:
對应代码為:
#include <GY30/gy30.h>
#define OPTCTRLLAMP_CMD_SWITCH "channel/optCtrlLamp_0/cmd/switch"
#define OPTCTRLLAMP_DATA_STATUS "channel/optCtrlLamp_0/data/status"
#define OPTCTRLLAMP_DATA_ILLUMINATION "channel/optCtrlLamp_0/data/illumination"
GY30 gy30;
void optCtrlLampSwitchCb(uint8_t *payload, uint32_t len)
{
if (atoi((char *)payload) == 0)
{
digitalWrite(D0, LOW);
IntoRobot.publish(OPTCTRLLAMP_DATA_STATUS,LOW);
}
else
{
digitalWrite(D0, HIGH);
IntoRobot.publish(OPTCTRLLAMP_DATA_STATUS,HIGH);
}
}
void setup()
{
Wire.begin();
delay(100);
IntoRobot.subscribe(OPTCTRLLAMP_CMD_SWITCH, NULL, optCtrlLampSwitchCb);
pinMode(D0, OUTPUT);
gy30.begin();
}
void loop()
{
IntoRobot.publish(OPTCTRLLAMP_DATA_ILLUMINATION, gy30.Read());
if (gy30.Read() >= 1000)
{
digitalWrite(D0, LOW);
IntoRobot.publish(OPTCTRLLAMP_DATA_STATUS,LOW);
}
delay(1000);
}
复制代碼
|