进阶之路(中级篇) - 015 串口控RGB三色灯
本文由博主原创,如有不对之处请指明,转载请说明出处。
1 /********************************* 2 代码功能:串口控RGB三色灯 3 使用函数: 4 Serial.flush(); //清空缓存区 5 Serial.available(); //读取当前串口缓冲池的数据量 6 Serial.print(字符串); //通过TX传出去 7 Serial.write(字符串); //写入串口中 8 Serial.println(字符串); //通过TX传出去,并在尾端加换行 9 strtok(字符串,'分隔符'); //字符串分解 10 strtol(字符串地址,NULL(默认),设置进制); //字符转整形 11 constrain(源数据,区间下界,区间上界); //区间函数 12 analogWrite(引脚号.电平); //IO输出函数 13 创作时间:2016*01*05 14 作者邮箱:jikexianfeng@outlook.com 15 ********************************/ 16 char buffer[18]; //声明一个字符空间 17 int red,green,blue; //定义一个变量 18 19 int Redpin = 11; //红 20 int Greenpin = 10; //绿 21 int Bluepin = 9; //蓝 22 23 void setup(){ 24 Serial.begin(9600); //初始化串口波特率 25 Serial.flush(); //清空串口缓存 26 pinMode(Redpin,OUTPUT); 27 pinMode(Greenpin,OUTPUT); 28 pinMode(Bluepin,OUTPUT); 29 } 30 void loop() 31 { 32 if(Serial.available() > 0){ //读取当前串口缓冲池的数据量 33 int index = 0; 34 delay(100); 35 int numChar = Serial.available(); //获取当前缓存池的数量 36 if(numChar > 15){ //只要最后的15个字符 37 numChar = 15; 38 } 39 while(numChar--){ 40 buffer[index++] = Serial.read(); //提取缓存中的数据 41 } 42 splitString(buffer); //传入功能函数 43 } 44 } 45 void splitString(char * data){ 46 Serial.print("Data entered:"); 47 Serial.println(data); 48 char* parameter; 49 parameter = strtok(data,","); //分解字符串 50 while(parameter != NULL){ //当 51 setLED(parameter); 52 parameter = strtok(NULL,","); 53 } 54 for(int x=0;x<16;x++){ 55 buffer[x]='\0'; 56 } 57 Serial.flush(); 58 } 59 void setLED(char *data){ 60 if((data[0]=='r')||(data[0] == 'R')){ //是否是 r 61 int Ans = strtol(data+1,NULL,10); //字符转整形 62 Ans = constrain(Ans,0,255); //去区间值 63 analogWrite(Redpin,Ans); //输出 64 Serial.print("Red is set to :"); 65 Serial.println(Ans); 66 } 67 68 if((data[0] == 'g')||(data[0] == 'G')){ 69 int Ans = strtol(data+1,NULL,10); 70 Ans = constrain(Ans,0,255); 71 analogWrite(Greenpin,Ans); 72 Serial.print("Green is set to :"); 73 Serial.println(Ans); 74 } 75 76 if((data[0] == 'b')||(data[0] == 'B')){ 77 int Ans = strtol(data+1,NULL,10); 78 Ans = constrain(Ans,0,255); 79 analogWrite(Bluepin,Ans); 80 Serial.print("Blue is set to :"); 81 Serial.println(Ans); 82 } 83 }
//
参考书籍: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三色灯相关推荐
- 恭喜你!在28岁前看见了腾讯顶级产品经理的进阶之路——第一篇《用户》
随着我国新媒体网络技术的飞速发展,许多新兴产业也随之诞生,增加了许多的就业机会,例如新媒体推广运营工作.在纷繁复杂的网络环境下,如何通过平台的推荐机制,如何使其精准的抵达至你的目标用户群体呢?艺形艺意 ...
- ZYNQ进阶之路14--PS端uart串口接收不定长数据
ZYNQ进阶之路14--PS端uart串口接收不定长数据 导语 ZYNQ串口简介 实现步骤 导语 繁忙的博主又来了,本节我们实现一个比较简单的东西:串口.之前的章节中我们也有使用PS端的串口进行收发数 ...
- 黎想深度访谈腾讯顶级产品经理的进阶之路——第二篇《定位》
16个月精心打磨,9位顶级产品专家研讨提炼,凝聚腾讯产品经验的八集八分钟产品课分别从用户.定位.需求.时机.匠心.危机.合作.商业角度出发,还原产品背后的故事,分享给你腾讯产品的心法.艺形艺意工作室创 ...
- TypeScript极速完全进阶指南-2中级篇
好,我们继续那个沉重的话题分割我的财产,上一篇 TypeScript极速完全进阶指南-1初级篇 我儿子确实拿到钱了, class Person{name:string;age:number;food: ...
- 九、【中级篇】串口通信(USART、IIC)、读取EEPROM
串行接口 1.串口简介 串口的工作模式 串口与并口的区别 不同电平标准的串口 开发板上的串口 2.USART/UART简介 USART/UART的配置 初始化USART1 发送与接收数据 3.串口解析 ...
- 全栈工程师之路-中级篇之小程序开发-第二章第五节小程序中的Promise
上一节课最后,我们遇到了一个警告. 说我们太过频繁的调用serData了,因为我们这个页面的三部分数据是通过三个接口获取的. 所以我们分别在三个接口返回的时候调用了数据绑定. 但是过于频繁的调用set ...
- Java工程师的进阶之路-Kafka篇(一)
2.为何使用消息系统 解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队 ...
- Java工程师的进阶之路-Kafka篇(一,韩顺平Java视频百度云
可恢复性: 系统的一部分组件失效时,不会影响到整个系统.消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理. 顺序保证: 在大多使用场景下,数据处 ...
- 黎想深度访谈腾讯顶级产品经理的进阶之路——第三篇《需求》
16个月精心打磨,9位顶级产品专家研讨提炼,凝聚腾讯产品经验的八集八分钟产品课分别从用户.定位.需求.时机.匠心.危机.合作.商业角度出发,还原产品背后的故事,分享给你腾讯产品的心法.艺形艺意工作室创 ...
最新文章
- linux 执行程序 注销,Linux登录登出的过程 | Soo Smart!
- 利用ACS实现AAA认证
- c语言的适当大小的子集,编译原理上机实验报告
- Python(2)-- 运算符
- Js数据类型之——Date
- 未转变者服务器未正常运行,未转变者Battleye服务不能正常运行 | 手游网游页游攻略大全...
- python pandas 排序_Pandas的排序和排名(Series, DataFrame) + groupby
- photoshop CG6 基础知识的学习
- 今天react开发遇到个比较恶心的问题
- Use EventBus
- ajax显示dataframe,如何使用ajax在运行时显示shell脚本的输出
- AAC音频的解码算法
- Eclipse配置 eclipse Java 配置 eclipse 简单配置 Eclipse 插件 配置 推荐 eclipse插件 eclipse 必备插件
- oracle付款汇兑损益怎么产生,汇兑损益如何进行账务处理?
- Java底层小开发的面试经历
- Windows7正式版默认壁纸暗藏玄机!
- (译)理解ConstraintLayout性能上的好处
- The History Began from AlexNet: A Comprehensive Survey on Deep Learning Approaches
- 利用Java反序列化漏洞在Windows上的挖矿实验
- ZedGraph保存图片的两种方式