本文由博主原创,如有不对之处请指明,转载请说明出处。

 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三色灯相关推荐

  1. 恭喜你!在28岁前看见了腾讯顶级产品经理的进阶之路——第一篇《用户》

    随着我国新媒体网络技术的飞速发展,许多新兴产业也随之诞生,增加了许多的就业机会,例如新媒体推广运营工作.在纷繁复杂的网络环境下,如何通过平台的推荐机制,如何使其精准的抵达至你的目标用户群体呢?艺形艺意 ...

  2. ZYNQ进阶之路14--PS端uart串口接收不定长数据

    ZYNQ进阶之路14--PS端uart串口接收不定长数据 导语 ZYNQ串口简介 实现步骤 导语 繁忙的博主又来了,本节我们实现一个比较简单的东西:串口.之前的章节中我们也有使用PS端的串口进行收发数 ...

  3. 黎想深度访谈腾讯顶级产品经理的进阶之路——第二篇《定位》

    16个月精心打磨,9位顶级产品专家研讨提炼,凝聚腾讯产品经验的八集八分钟产品课分别从用户.定位.需求.时机.匠心.危机.合作.商业角度出发,还原产品背后的故事,分享给你腾讯产品的心法.艺形艺意工作室创 ...

  4. TypeScript极速完全进阶指南-2中级篇

    好,我们继续那个沉重的话题分割我的财产,上一篇 TypeScript极速完全进阶指南-1初级篇 我儿子确实拿到钱了, class Person{name:string;age:number;food: ...

  5. 九、【中级篇】串口通信(USART、IIC)、读取EEPROM

    串行接口 1.串口简介 串口的工作模式 串口与并口的区别 不同电平标准的串口 开发板上的串口 2.USART/UART简介 USART/UART的配置 初始化USART1 发送与接收数据 3.串口解析 ...

  6. 全栈工程师之路-中级篇之小程序开发-第二章第五节小程序中的Promise

    上一节课最后,我们遇到了一个警告. 说我们太过频繁的调用serData了,因为我们这个页面的三部分数据是通过三个接口获取的. 所以我们分别在三个接口返回的时候调用了数据绑定. 但是过于频繁的调用set ...

  7. Java工程师的进阶之路-Kafka篇(一)

    2.为何使用消息系统 解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队 ...

  8. Java工程师的进阶之路-Kafka篇(一,韩顺平Java视频百度云

    可恢复性: 系统的一部分组件失效时,不会影响到整个系统.消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理. 顺序保证: 在大多使用场景下,数据处 ...

  9. 黎想深度访谈腾讯顶级产品经理的进阶之路——第三篇《需求》

    16个月精心打磨,9位顶级产品专家研讨提炼,凝聚腾讯产品经验的八集八分钟产品课分别从用户.定位.需求.时机.匠心.危机.合作.商业角度出发,还原产品背后的故事,分享给你腾讯产品的心法.艺形艺意工作室创 ...

最新文章

  1. linux 执行程序 注销,Linux登录登出的过程 | Soo Smart!
  2. 利用ACS实现AAA认证
  3. c语言的适当大小的子集,编译原理上机实验报告
  4. Python(2)-- 运算符
  5. Js数据类型之——Date
  6. 未转变者服务器未正常运行,未转变者Battleye服务不能正常运行 | 手游网游页游攻略大全...
  7. python pandas 排序_Pandas的排序和排名(Series, DataFrame) + groupby
  8. photoshop CG6 基础知识的学习
  9. 今天react开发遇到个比较恶心的问题
  10. Use EventBus
  11. ajax显示dataframe,如何使用ajax在运行时显示shell脚本的输出
  12. AAC音频的解码算法
  13. Eclipse配置 eclipse Java 配置 eclipse 简单配置 Eclipse 插件 配置 推荐 eclipse插件 eclipse 必备插件
  14. oracle付款汇兑损益怎么产生,汇兑损益如何进行账务处理?
  15. Java底层小开发的面试经历
  16. Windows7正式版默认壁纸暗藏玄机!
  17. (译)理解ConstraintLayout性能上的好处
  18. The History Began from AlexNet: A Comprehensive Survey on Deep Learning Approaches
  19. 利用Java反序列化漏洞在Windows上的挖矿实验
  20. ZedGraph保存图片的两种方式

热门文章

  1. OpenCV FLANN匹配器判断重复图像 思路及代码
  2. Elasticsearch之路由
  3. 技术分享 | 隔离级别:正确理解幻读
  4. 实战十三:基于BPR算法实现个性化排名推荐 代码+数据
  5. JSP在电子商务网站开发的运用应用发展方向
  6. C语言中的TRUE和FALSE
  7. 远程缝制葡萄皮,成本仅1万元,华为200万年薪博士杰作
  8. 这本书,豆瓣评分9.3,送给大家!
  9. mysql设备台账_mysql数据库操作语句大全.pdf
  10. Python综合评价模型(三)秩和比法