HoneyBee教程入门系列-第四课-无线控制RGB LED灯 实验一 教程,无线,LED灯
上节课我们介绍了无线Blink
本节课我们将介绍无线控制RGB LEB
本节课将介绍2种方式来无线控制RGB LED
所需器材:
OCROBOT HoneyBee控制板2块
RGB LED灯一颗
220Ω电阻3颗
面包板专用跳线盒1个
面包板一块
实验一:无线串口控制RGB:
连线图
2013-7-12 15:23 上传
(82.54 KB)
在接收端连接好RGB LED电路
2013-7-9 10:40 上传
(494.92 KB)
下载接收端程序
/*
作者: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
2013-7-9 10:51 上传
(15.12 KB)
点击发射后,可以看到LED显示红色
2013-7-9 10:51 上传
(482.32 KB)
输入0,255,0
2013-7-9 10:52 上传
(14.44 KB)
显示绿色
2013-7-9 10:52 上传
(439.75 KB)
输入0,0,255
2013-7-9 10:52 上传
(14.41 KB)
显示蓝色
2013-7-9 10:53 上传
(461.51 KB)