本文由博主原创,如有不对之处请指明,转载请说明出处。
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]='