重庆生活网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 生活 重庆
查看: 1118|回复: 0
打印 上一主题 下一主题

IntoRobt【图形编程】光控灯示例 兼容ARM

[复制链接]
跳转到指定楼层
楼主
发表于 2020-3-13 16:35:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    3.进入工程后可以看到图形编程的主界面,默认存在“IntoRobot主程1)点击左侧“控制”菜单,选择“重复执行”模块,拖动至编辑区,组合在“I3)点击左侧“传感器”-“光强度传感器”,选择“当前光强度”输出模块,该#defineOPTCTRLLAMP_DATA_ILLUMINATION4)点击“控制”菜单,选择“如果那么”模块,拖动至编辑区域组合在“重复执15)在之前已经组合的“【光控灯】控制灯D0为关闭”模块上点击右键,点击4)选择设置光照传感器以及灯光控制连接的管脚。示例中光照传感器使用默认的#defineOPTCTRLLAMP_DATA_ILLUMINATION




1.    登录IntoRobot平台,进入图形编程。
2.    新建工程,输入工程名称和描述,选擇绑定设备(程序烧录的目标设备)后点击保存。如图:




3.    进入工程后可以看到图形編程的主界面,默认存在“IntoRobot主程序”,点击“代码”按钮可以看到当前图形编程对應生成的代碼,并且代码可以根据图形操作实时更新,便于学习,如圖:








4.    點擊左侧图形代码模块菜单,选擇点击需要使用的模块,拖动至编辑區域進行组合,按如下步骤進行:
1)        点击左侧“控制”菜单,选擇“重复执行”模块,拖動至编辑区,组合在“IntoRobot主程序”下,由于“重復執行”对应程序中的loop函数,故该步骤代碼無变化。如圖:









2)        点擊左侧“光控灯”,选择“【光控燈】显示光強度”,组合在“重复执行”中,,此時代码會进行相应的更新。如图:

a01.png (325.99 KB, 下载次数: 1)






3)        点击左侧“传感器”-“光强度传感器”,选擇“当前光強度”輸出模块,该模块會读取wire管脚GY30传感器的值并输出,將其组合在“【光控灯】显示光强度”中。















此时代码更新为:





   

         

            
#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)        点擊“数字与邏辑”菜单,选择“数字”模塊,拖动至编辑區域组合在“比較值”模块的右侧空白處,并点击数字修改为需要设置的值,如图:




8)        点击“功能控件”-“光控灯”菜单,選择“【光控灯】控制灯状态”模块,拖動至编輯区域组合在“如果那么”模块中,如图:




9)        点击“IntoRobot”菜单,选择“延时”模块,拖动至编輯区域组合在“如果那么”的下一步执行位置,在“重复执行“中,如圖:




10)    点击“功能控件”-“光控燈”菜单,选择“【光控燈】事件监控”模块,拖動至编辑区域放置的空白处即可,如图:





11)    点击“控制”菜单,选择“如果那么 否则”模块,拖动至编輯区域组合在“【光控灯】事件监控”模块下面,如圖:

10.ifelse.png (149.49 KB, 下载次数: 1)

2015-12-19 14:59 上傳





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);

}
        

   

    复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|联系我们|重庆生活网

GMT+8, 2024-4-30 17:47 , Processed in 0.171875 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表