|
上节课我们介绍了无线Blink
本节课我们将介绍无线控制RGB LEB
本节课将介绍2种方式来无线控制RGB LED
所需器材:
OCROBOT HoneyBee控制板2块
RGB LED灯一颗
220Ω电阻3颗
面包板专用跳线盒1个
面包板一块
实验一:无线串口控制RGB:
连线图
在接收端连接好RGB LED电路
下载接收端程序 - /*
- 作者:swim
- 时间:2013年7月9日
- 发表地址:www.geek-workshop.com
- 程序说明:无线RGB接收端程序
- */
- #include <ZigduinoRadio.h>
- //定义变量
- int r;
- int g;
- int b;
- //定义输出管脚
- int redPin=10;
- int greenPin=9;
- int bluePin=8;
- //定义字符串
- String comdata = "";
- int numdata[3] = {0}, mark = 0;
- void setup()
- {
- ZigduinoRadio.begin(11);//设置通信通道,可从11-26,通道一致就可通信
- Serial.begin(9600);//初始化话串口
- pinMode(redPin,OUTPUT);//设置管脚为输出模式
- pinMode(greenPin,OUTPUT);
- pinMode(bluePin,OUTPUT);
- setColor(0,0,0);//初始化LED灯为关闭
- }
- void loop()
- {
- while(ZigduinoRadio.available()>0)//当无线接收到数据就执行下面程序
- {
- SerialReadVal(3);
- }
- }
- void setColor(int red, int green, int blue)//RGB LED调节颜色的程序
- {
- analogWrite(redPin, 255-red);
- analogWrite(greenPin, 255-green);
- analogWrite(bluePin, 255-blue);
- }
- //下面的为对接收到的数据进行处理的程序不解释
- void SerialReadVal(unsigned int comdata_digit)
- {
- String comdata = ""; //串口字符串传递变量
- char comdata_mark = ','; //字符串分段标志,可更改
- int comdata_mark_count = 0; //分段标志数量
- unsigned int comdata_mark_list[63]; //分段标志位置列表,最大63+1段,此三项可视实际情况增减
- unsigned int comdata_val_long[64]; //每段字串长度列表,最大64段
- String comdata_val[64]; //分段字符串列表,最大64段数据,此数组可在程序开始定义为全局变量,用于返回数据,数据可继续进行深加工
- //读入串口数据并赋值给传递变量
- while (ZigduinoRadio.available() > 0)
- {
- comdata += char(ZigduinoRadio.read());
- delay(2);
- }
- Serial.println(comdata);
- //确定分段标志位置,并判断输入段数是否符合给定值
- for (int i = 0; i < comdata.length(); i++)
- {
- if (comdata.charAt(i) == comdata_mark)
- {
- comdata_mark_list[comdata_mark_count] = i;
- comdata_mark_count++;
- }
- }
- for (int i = 0; i <= comdata_mark_count; i++)
- {
- if (i == 0) comdata_val_long[0] = comdata_mark_list[0];
- else if (i == comdata_mark_count) comdata_val_long[i] = comdata.length() - comdata_mark_list[i-1] - 1;
- else comdata_val_long[i] = comdata_mark_list[i] - comdata_mark_list[i-1] - 1;
- }
- if (comdata_mark_count < (comdata_digit - 1)) return;
- //按给定的段数分段
- for (int i = 0; i < comdata_digit; i++)
- {
- if (i == 0)
- {
- for (int ii = 0; ii < comdata_val_long[0]; ii++) comdata_val[i] += comdata.charAt(ii);
- }
- else
- {
- for (int ii = 0; ii < comdata_val_long[i]; ii++) comdata_val[i] += comdata.charAt(comdata_mark_list[i-1]+1+ii);
- }
- }
- for (int i = 0; i < comdata_digit; i++); //Serial.println(comdata_val[i]); // 串口监视程序运行
- b=comdata_val[2].toInt() ;
- g=comdata_val[1].toInt() ;
- r=comdata_val[0].toInt() ;
- setColor(r,g,b);
- }
复制代码
将发射端连接上电脑,下载发射端程序 - /*
- 作者:swim
- 时间:2013年7月9日
- 发表地址:www.geek-workshop.com
- 程序说明:无线RGB发射端程序
- */
- #include <ZigduinoRadio.h>
- char i;
- void setup()
- {
- ZigduinoRadio.begin(11);
- Serial.begin(9600);
- }
- void loop()
- {
- if (Serial.available())
- {
- ZigduinoRadio.beginTransmission();
- i=(char)Serial.read();
- ZigduinoRadio.write(i);
- ZigduinoRadio.endTransmission();
- }
- }
复制代码
然后打开串口监视器,可以输入三种颜色值,以逗号分隔
例如我们输入255,0,0
点击发射后,可以看到LED显示红色
输入0,255,0
显示绿色
输入0,0,255
显示蓝色
视频展示:
是不是很简单很好玩呢,你也快来试试吧 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|