进阶之路(中级篇) - 015 串口控RGB三色灯
/*********************************
代码功能:串口控RGB三色灯
使用函数:
Serial.flush(); //清空缓存区
Serial.available(); //读取当前串口缓冲池的数据量
Serial.print(字符串); //通过TX传出去
Serial.write(字符串); //写入串口中
Serial.println(字符串); //通过TX传出去,并在尾端加换行
strtok(字符串,'分隔符'); //字符串分解
strtol(字符串地址,NULL(默认),设置进制); //字符转整形
constrain(源数据,区间下界,区间上界); //区间函数
analogWrite(引脚号.电平); //IO输出函数
创作时间:2016*01*05
作者邮箱:jikexianfeng@outlook.com
********************************/
char buffer[]; //声明一个字符空间
int red,green,blue; //定义一个变量 int Redpin = ; //红
int Greenpin = ; //绿
int Bluepin = ; //蓝 void setup(){
Serial.begin(); //初始化串口波特率
Serial.flush(); //清空串口缓存
pinMode(Redpin,OUTPUT);
pinMode(Greenpin,OUTPUT);
pinMode(Bluepin,OUTPUT);
}
void loop()
{
if(Serial.available() > ){ //读取当前串口缓冲池的数据量
int index = ;
delay();
int numChar = Serial.available(); //获取当前缓存池的数量
if(numChar > ){ //只要最后的15个字符
numChar = ;
}
while(numChar--){
buffer[index++] = Serial.read(); //提取缓存中的数据
}
splitString(buffer); //传入功能函数
}
}
void splitString(char * data){
Serial.print("Data entered:");
Serial.println(data);
char* parameter;
parameter = strtok(data,","); //分解字符串
while(parameter != NULL){ //当
setLED(parameter);
parameter = strtok(NULL,",");
}
for(int x=;x<;x++){
buffer[x]='\0';
}
Serial.flush();
}
void setLED(char *data){
if((data[]=='r')||(data[] == 'R')){ //是否是 r
int Ans = strtol(data+,NULL,); //字符转整形
Ans = constrain(Ans,,); //去区间值
analogWrite(Redpin,Ans); //输出
Serial.print("Red is set to :");
Serial.println(Ans);
} if((data[] == 'g')||(data[] == 'G')){
int Ans = strtol(data+,NULL,);
Ans = constrain(Ans,,);
analogWrite(Greenpin,Ans);
Serial.print("Green is set to :");
Serial.println(Ans);
} if((data[] == 'b')||(data[] == 'B')){
int Ans = strtol(data+,NULL,);
Ans = constrain(Ans,,);
analogWrite(Bluepin,Ans);
Serial.print("Blue is set to :");
Serial.println(Ans);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
参考书籍:http://vdisk.weibo.com/s/B_U0yKSwLLqNM?category_id=0&parents_ref=B_U0yKSx62tsp
参考网站:http://wiring.org.co/reference/
参考网页:http://www.cnblogs.com/jikexianfeng/p/6243654.html
参考网页:http://www.cnblogs.com/rayray/p/3198091.html
进阶之路(中级篇) - 015 串口控RGB三色灯的更多相关文章
- 串口控RGB三色灯
本文由博主原创,如有不对之处请指明,转载请说明出处. /********************************* 代码功能:串口控RGB三色灯 使用函数: Serial.flush(); / ...
- docker进阶之路-基础篇 | 一:环境搭建
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061747.html 一.准备工作 查看内核 Docker 要求 CentOS ...
- docker进阶之路-基础篇 | 二:portainer安装与基本使用
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061755.html 简介 Portainer 是轻量级,跨平台,开源的管理D ...
- 运维工程师打怪升级进阶之路 V2.0
在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- Sass进阶之路,之一(基础篇)
Sass 学习Sass之前,应该要知道css预处理器这个东西,css预处理器是什么呢? Css预处理器定义了一种新的语言将Css作为目标生成文件,然后开发者就只要使用这种语言进行编码工作了.预处理器通 ...
- 【SSH进阶之路】Hibernate系列——总结篇(九)
这篇博文是Hibernate系列的最后一篇,既然是最后一篇,我们就应该进行一下从头到尾,整体上的总结,将这个系列的内容融会贯通. 概念 Hibernate是一个对象关系映射框架,当然从分层的角度看,我 ...
随机推荐
- Trie树分词
http://www.hankcs.com/program/java/tire-tree-participle.html 最近在看Ansj中文分词的源码,以前没有涉足过这个领域,所以需要做一些笔记. ...
- (转)【Unity Shaders】Vertex Magic —— 访问顶点颜色
转自:http://blog.csdn.net/candycat1992/article/details/38147767 本系列主要参考<Unity Shaders and Effects C ...
- (转)C#中的委托(Delegate)和事件(Event)
转自:http://blog.chinaunix.net/uid-576762-id-2733751.html 把C#中的委托(Delegate)和事件(Event)放到现在讲是有目的的:给下次写 ...
- [PureScript] Break up Expressions into Cases in PureScript using Simple Pattern Matching
Pattern matching in functional programming languages is a way to break up expressions into individua ...
- 在webstorm中配置sass环境
最近开始用SASS,LESS等来写CSS,而在Webstorm中,它自带一个File Watchers功能,设置一下,即可实时编译SASS,LESS等. LESS的实时编译很简单,在node平台安装一 ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- WPF编程:textbox控件文本框数据显示最后一行
WPF编程:textbox控件文本框数据显示最后一行 TextBox控件在接收大量数据的时候,滚动条一般在最上方,如何使滚动条随着数据的接收而向下滚动呢?比如有一个TextBox'控件txbRecvD ...
- 用一条sql取得第10到第20条的记录
因为id可能不是连续的,所以不能用取得10<id<20的记录的方法. 有三种方法可以实现:一.搜索前20条记录,指定不包括前10条语句:select top 20 * from tbl w ...
- Asp.Net下通过切换CSS换皮肤
直接重写Render事件 protected override void Render(System.Web.UI.HtmlTextWriter writer) { StringWriter sw = ...
- 微信小程序 - 深度定义骨架屏(提示)
此举每个页面必须创建对应的css样式,比较麻烦(但非常准确),推荐使用组件化的skeleton组件 原理很简单:知晓一下this.setData原理,就OK了,可能大家会因此了解到全屏加载loadin ...