在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
查看: 1743|回复: 0

[原创] IntoRobt【图形编程】光控灯示例 兼容ARM

[复制链接]
发表于 2016-4-5 22:25:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 zhang209a 于 2016-4-5 22:49 编辑

1.    登录IntoRobot平台,进入图形编程。

2.    新建工程,输入工程名称和描述,选择绑定设备(程序烧录的目标设备)后点击保存。如图:


                               
登录/注册后可看大图


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



                               
登录/注册后可看大图




4.    点击左侧图形代码模块菜单,选择点击需要使用的模块,拖动至编辑区域进行组合,按如下步骤进行:

1)        点击左侧“控制”菜单,选择“重复执行”模块,拖动至编辑区,组合在“IntoRobot主程序”下,由于“重复执行”对应程序中的loop函数,故该步骤代码无变化。如图:


                               
登录/注册后可看大图



                               
登录/注册后可看大图



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


                               
登录/注册后可看大图

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


                               
登录/注册后可看大图



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


                               
登录/注册后可看大图





                               
登录/注册后可看大图





此时代码更新为:






  1. #include <GY30/gy30.h>
  2. #define OPTCTRLLAMP_CMD_SWITCH    "channel/optCtrlLamp_0/cmd/switch"
  3. #define OPTCTRLLAMP_DATA_STATUS    "channel/optCtrlLamp_0/data/status"
  4. #define OPTCTRLLAMP_DATA_ILLUMINATION    "channel/optCtrlLamp_0/data/illumination"

  5. GY30 gy30;
  6. void setup()
  7. {
  8.         Wire.begin();
  9.         delay(100);
  10.         gy30.begin();
  11. }

  12. void loop()
  13. {
  14.         IntoRobot.publish(OPTCTRLLAMP_DATA_ILLUMINATION, gy30.Read());
  15. }


复制代码








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.    图形代码各模块注释如下图:


                               
登录/注册后可看大图




对应代码为:





  1. #include <GY30/gy30.h>
  2. #define OPTCTRLLAMP_CMD_SWITCH    "channel/optCtrlLamp_0/cmd/switch"
  3. #define OPTCTRLLAMP_DATA_STATUS    "channel/optCtrlLamp_0/data/status"
  4. #define OPTCTRLLAMP_DATA_ILLUMINATION    "channel/optCtrlLamp_0/data/illumination"

  5. GY30 gy30;
  6. void optCtrlLampSwitchCb(uint8_t *payload, uint32_t len)
  7. {
  8.         if (atoi((char *)payload) == 0)
  9.         {
  10.                 digitalWrite(D0, LOW);
  11.                 IntoRobot.publish(OPTCTRLLAMP_DATA_STATUS,LOW);
  12.         }
  13.         else
  14.         {
  15.                 digitalWrite(D0, HIGH);
  16.                 IntoRobot.publish(OPTCTRLLAMP_DATA_STATUS,HIGH);
  17.         }
  18. }

  19. void setup()
  20. {
  21.         Wire.begin();
  22.         delay(100);
  23.         IntoRobot.subscribe(OPTCTRLLAMP_CMD_SWITCH, NULL, optCtrlLampSwitchCb);
  24.         pinMode(D0, OUTPUT);

  25.         gy30.begin();
  26. }

  27. void loop()
  28. {
  29.         IntoRobot.publish(OPTCTRLLAMP_DATA_ILLUMINATION, gy30.Read());
  30.         if (gy30.Read() >= 1000)
  31.         {
  32.                 digitalWrite(D0, LOW);
  33.                 IntoRobot.publish(OPTCTRLLAMP_DATA_STATUS,LOW);
  34.         }

  35.         delay(1000);
  36. }


复制代码

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

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 04:57 , Processed in 0.024819 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表