打印

图形化编程 光控灯实例二

[复制链接]
1135|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhang209a9 于 2016-4-1 21:29 编辑

续图形化编程 光控灯实例一
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);
}

相关帖子

沙发
ternenceliu| | 2016-4-8 10:13 | 只看该作者
看起来很好玩

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝