极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 40989|回复: 14

HoneyBee入门教程--第四课--无线控制RGB LED灯 实验一

[复制链接]
发表于 2013-7-9 10:56:59 | 显示全部楼层 |阅读模式
上节课我们介绍了无线Blink
本节课我们将介绍无线控制RGB LEB
本节课将介绍2种方式来无线控制RGB LED

所需器材:
OCROBOT HoneyBee控制板2块
RGB LED灯一颗
220Ω电阻3颗
面包板专用跳线盒1个
面包板一块

实验一:无线串口控制RGB:
连线图

在接收端连接好RGB LED电路

下载接收端程序

  1. /*
  2. 作者:swim
  3. 时间:2013年7月9日
  4. 发表地址:www.geek-workshop.com
  5. 程序说明:无线RGB接收端程序
  6. */
  7. #include <ZigduinoRadio.h>

  8. //定义变量
  9. int r;
  10. int g;
  11. int b;
  12. //定义输出管脚
  13. int redPin=10;
  14. int greenPin=9;
  15. int bluePin=8;
  16. //定义字符串
  17. String comdata = "";
  18. int numdata[3] = {0}, mark = 0;

  19. void setup()
  20. {
  21.   ZigduinoRadio.begin(11);//设置通信通道,可从11-26,通道一致就可通信
  22.   Serial.begin(9600);//初始化话串口
  23.   pinMode(redPin,OUTPUT);//设置管脚为输出模式
  24.   pinMode(greenPin,OUTPUT);
  25.   pinMode(bluePin,OUTPUT);
  26.   setColor(0,0,0);//初始化LED灯为关闭
  27. }

  28. void loop()
  29. {
  30.   while(ZigduinoRadio.available()>0)//当无线接收到数据就执行下面程序
  31.   {
  32.     SerialReadVal(3);
  33.   }

  34. }

  35. void setColor(int red, int green, int blue)//RGB LED调节颜色的程序
  36. {
  37.   analogWrite(redPin, 255-red);
  38.   analogWrite(greenPin, 255-green);
  39.   analogWrite(bluePin, 255-blue);  
  40. }

  41. //下面的为对接收到的数据进行处理的程序不解释
  42. void SerialReadVal(unsigned int comdata_digit)
  43. {
  44.   String comdata = "";  //串口字符串传递变量
  45.   char comdata_mark = ','; //字符串分段标志,可更改
  46.   int comdata_mark_count = 0; //分段标志数量
  47.   unsigned int comdata_mark_list[63]; //分段标志位置列表,最大63+1段,此三项可视实际情况增减
  48.   unsigned int comdata_val_long[64]; //每段字串长度列表,最大64段
  49.   String comdata_val[64]; //分段字符串列表,最大64段数据,此数组可在程序开始定义为全局变量,用于返回数据,数据可继续进行深加工

  50.   //读入串口数据并赋值给传递变量
  51.   while (ZigduinoRadio.available() > 0)
  52.   {
  53.     comdata += char(ZigduinoRadio.read());
  54.     delay(2);
  55.   }
  56.   Serial.println(comdata);
  57.   //确定分段标志位置,并判断输入段数是否符合给定值
  58.   for (int i = 0; i < comdata.length(); i++)
  59.   {
  60.     if (comdata.charAt(i) == comdata_mark)
  61.     {
  62.       comdata_mark_list[comdata_mark_count] = i;
  63.       comdata_mark_count++;
  64.     }
  65.   }
  66.   for (int i = 0; i <= comdata_mark_count; i++)
  67.   {
  68.     if (i == 0) comdata_val_long[0] = comdata_mark_list[0];
  69.     else if (i == comdata_mark_count) comdata_val_long[i] = comdata.length() - comdata_mark_list[i-1] - 1;
  70.     else comdata_val_long[i] = comdata_mark_list[i] - comdata_mark_list[i-1] - 1;
  71.   }

  72.   if (comdata_mark_count < (comdata_digit - 1)) return;

  73.   //按给定的段数分段
  74.   for (int i = 0; i < comdata_digit; i++)
  75.   {
  76.     if (i == 0)
  77.     {
  78.       for (int ii = 0; ii < comdata_val_long[0]; ii++) comdata_val[i] += comdata.charAt(ii);
  79.     }
  80.     else
  81.     {
  82.       for (int ii = 0; ii < comdata_val_long[i]; ii++) comdata_val[i] += comdata.charAt(comdata_mark_list[i-1]+1+ii);
  83.     }
  84.   }
  85.   for (int i = 0; i < comdata_digit; i++); //Serial.println(comdata_val[i]); // 串口监视程序运行
  86.   b=comdata_val[2].toInt() ;
  87.   g=comdata_val[1].toInt() ;
  88.   r=comdata_val[0].toInt() ;
  89.   setColor(r,g,b);
  90. }
复制代码


将发射端连接上电脑,下载发射端程序

  1. /*
  2. 作者:swim
  3. 时间:2013年7月9日
  4. 发表地址:www.geek-workshop.com
  5. 程序说明:无线RGB发射端程序
  6. */
  7. #include <ZigduinoRadio.h>
  8. char i;

  9. void setup()
  10. {
  11.   ZigduinoRadio.begin(11);
  12.   Serial.begin(9600);
  13. }

  14. void loop()
  15. {
  16.   if (Serial.available())
  17.   {
  18.     ZigduinoRadio.beginTransmission();
  19.     i=(char)Serial.read();
  20.     ZigduinoRadio.write(i);
  21.     ZigduinoRadio.endTransmission();
  22.   }
  23. }
复制代码


然后打开串口监视器,可以输入三种颜色值,以逗号分隔
例如我们输入255,0,0

点击发射后,可以看到LED显示红色

输入0,255,0

显示绿色

输入0,0,255

显示蓝色


视频展示:


是不是很简单很好玩呢,你也快来试试吧

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-8-15 22:50:01 | 显示全部楼层
想问的是,那个bitcloud协议栈是怎么使用的?这个zigradio不属于zigbee协议吧,能支持自组网么?
回复 支持 反对

使用道具 举报

发表于 2013-8-15 22:57:35 | 显示全部楼层
raiseyu 发表于 2013-8-15 22:50
想问的是,那个bitcloud协议栈是怎么使用的?这个zigradio不属于zigbee协议吧,能支持自组网么?

属于,能够,自己安装配置好传感器操作系统就妥了。。
回复 支持 反对

使用道具 举报

发表于 2013-8-15 23:03:16 | 显示全部楼层
还要上操作系统,类似contiki那些吗?到目前还没搞清楚,如果用了contiki,那么应用程序用什么写?还能用arduino吗?
回复 支持 反对

使用道具 举报

发表于 2013-11-18 14:22:59 | 显示全部楼层
速度放出教程啊!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-20 20:44:27 | 显示全部楼层
nust_奔跑 发表于 2013-11-18 14:22
速度放出教程啊!!!

最近一直在忙别的  好多实验写了程序  没空写教程
回复 支持 反对

使用道具 举报

发表于 2013-11-20 22:07:56 | 显示全部楼层
swim 发表于 2013-11-20 20:44
最近一直在忙别的  好多实验写了程序  没空写教程

放出程序也可以啊~
尽快到自动组网~~~
求学习~~~
回复 支持 反对

使用道具 举报

发表于 2014-6-18 21:05:54 | 显示全部楼层
好深奥啊,初学者看不懂啊
回复 支持 反对

使用道具 举报

发表于 2014-7-27 13:14:55 | 显示全部楼层
code届时能不能多一点啊  多谢
回复 支持 反对

使用道具 举报

发表于 2014-7-27 13:44:54 | 显示全部楼层
Friday 发表于 2014-7-27 13:14
code届时能不能多一点啊  多谢

核心库升级了很多,修正了很多bug,code这两天IDE更新出来后,就会开始连载HoneyBee教程。。。
回复 支持 反对

使用道具 举报

发表于 2014-7-28 14:16:33 | 显示全部楼层
很久没教程了。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2014-8-7 09:37:29 | 显示全部楼层
我想自己搭建一个服务器,然后移动端能控制电器。。话说没看到怎么网络通信的,还是小白....
回复 支持 反对

使用道具 举报

发表于 2014-10-11 14:53:40 | 显示全部楼层
为什么要两块honeybee呢?
回复 支持 反对

使用道具 举报

发表于 2016-5-9 18:09:31 | 显示全部楼层
好资料,研究下,
回复 支持 反对

使用道具 举报

发表于 2016-5-9 18:14:57 | 显示全部楼层
好资料,研究下,
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 18:18 , Processed in 0.048185 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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