进阶之路(中级篇) - 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是一个对象关系映射框架,当然从分层的角度看,我 ...
随机推荐
- Node.js中针对中文的查找和替换无效的解决方法
Node.js中针对中文的查找和替换无效的解决方法. //tags的值: tag,测试,帖子 var pos1 = tags.indexOf("测"); //这里返回-1 ta ...
- 【nodejs】理想论坛帖子下载爬虫1.08
//====================================================== // 理想论坛帖子下载爬虫1.09 // 使用断点续传模式,因为网络传输会因各种原因中 ...
- Android自定义一款带进度条的精美按键
Android中自定义View并没有什么可怕的,拿到一个需要自定义的View,首先要做的就是把它肢解,然后思考每一步是怎样实现的,按分析的步骤一步一步的编码实现,最后你就会发现达到了你想要的效果.本文 ...
- 具体解说Android的图片下载框架UniversialImageLoader之磁盘缓存(一)
沉浸在Android的开发世界中有一些年头的猴子们,预计都可以深深的体会到Android中的图片下载.展示.缓存一直是心中抹不去的痛.鄙人亦是如此.Ok,闲话不说.为了督促自己的学习.以下就逐一的挖掘 ...
- 2014秋C++ 第9周项目 循环程序设计
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...
- spring boot 启动找不到或无法加载主类
转载:https://www.cnblogs.com/mrray1105/p/8137247.html 刚开始是往上面箭头指出的方向去找问题的原因,但是试了各种方法后问题还是没有解决,于是乎我把焦点转 ...
- Dictionary应用
using System; using System.Collections.Generic; using System.Data; using System.Web; using System.We ...
- Windows下的Qt Creator的安装
采用Qt和Qt creator分别下载和安装的方式:(需要手动设置关联Qt和Qt Creator) 一.软件下载 从http://qt-project.org/downloads分别下载Qt和Qt ...
- cpu内存访问速度,磁盘和网络速度,所有人都应该知道的数字
google 工程师Jeff Dean 首先在他关于分布式系统的ppt文档列出来的,到处被引用的很多. 1纳秒等于10亿分之一秒,= 10 ^ -9 秒 ---------------------- ...
- 转 VB ListView控件各种操作详解
Private Sub Form_Load() ListView1.ListItems.Clear '清空列表 ListView1.ColumnHeaders.Clear '清空列表头 ListVie ...