Arduino串口接收字符串.docx

上传人:b****3 文档编号:4850800 上传时间:2022-12-10 格式:DOCX 页数:6 大小:77.87KB
下载 相关 举报
Arduino串口接收字符串.docx_第1页
第1页 / 共6页
Arduino串口接收字符串.docx_第2页
第2页 / 共6页
Arduino串口接收字符串.docx_第3页
第3页 / 共6页
Arduino串口接收字符串.docx_第4页
第4页 / 共6页
Arduino串口接收字符串.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

Arduino串口接收字符串.docx

《Arduino串口接收字符串.docx》由会员分享,可在线阅读,更多相关《Arduino串口接收字符串.docx(6页珍藏版)》请在冰豆网上搜索。

Arduino串口接收字符串.docx

Arduino串口接收字符串

Arduino串口接收字符串

Arduino串口接收字符串

用惯Arduino串口传输的朋友都知道,Arduino的Serial.read()每次只能读一个字节,但是有时想进行字符串通讯,就很麻烦了。

废话少讲,直接上完整例子:

编译只要一块Arduino,不需要任何外置元件。

用Arduino编译器的串口监视器即可看到结果,我们打什么文字进去,下面就会返回什么文字。

Stringcomdata="";

voidsetup()

{

Serial.begin(9600);

}

voidloop()

{

while(Serial.available()>0)

{

comdata+=char(Serial.read());

delay

(2);

}

if(comdata.length()>0)

{

Serial.println(comdata);

comdata="";

}

}

代码很简单,comdata是一个字符串类型变量。

Serial.available()是当前串口缓冲池的数据量。

Serial.read()是读缓冲池的语句,每次只能读一个字节。

用了String类型变量,很简单的实现了字符到字符串的加入,还有字符串输出,赋值等麻烦问题,所以很简单的代码就能处理串口数据。

特别留意的是读串口时的delay

(2)不能删掉,否则串口缓冲区不够时间接受数据。

即使调小延时也会出错。

具体数值也可以实验决定。

再提醒一个:

comdata说是一个字符串,也是一个数组,引用每个字的话可以用comdata[0],comdata[1]。

comdata[n]。

如果我们要每个字节取出的话,可以每个引用。

效果:

输入什么字符串,输出就是什么。

输入:

按send之后:

Stringcomdata="";

voidsetup()

{

Serial.begin(9600);

for(inti=2;i<=13;i++)

pinMode(i,OUTPUT);

}

voidloop()

{

while(Serial.available()>0)

{

comdata+=int(Serial.read())-'0';

delay

(2);

}

if(comdata.length()>0)

{

for(inti=0;i

{

if(comdata[i]=='0'||comdata[i]=='1')

{

digitalWrite(i+2,comdata[i]-'0');

Serial.print("Pin");

Serial.print(i+2);

Serial.print("is");

Serial.println(comdata[i]);

}

}

comdata="";

}

}

再来一个:

进阶版(有待测试)

输入六个逗号分隔数比如:

50,20,5,255,20,20

就能令Arduino的PWM引脚(3,5,6,9,10,11):

按照PWM值发光。

所以逗号分割数必须是0~255

Stringcomdata="";

intnumdata[6]={0},PWMPin[6]={3,5,6,9,10,11},mark=0;

voidsetup()

{

for(inti=0;i<6;i++)

pinMode(PWMPin[i],OUTPUT);

Serial.begin(9600);

}

voidloop()

{

intj=0;

while(Serial.available()>0)

{

comdata+=char(Serial.read());

delay

(2);

mark=1;

}

if(mark==1)

{

Serial.println(comdata);

Serial.println(comdata.length());

for(inti=0;i

{

if(comdata[i]==',')

{

j++;

}

else

{

numdata[j]=numdata[j]*10+(comdata[i]-'0');

}

}

comdata=String("");

for(inti=0;i<6;i++)

{

Serial.print("Pin");

Serial.print(PWMPin[i]);

Serial.print("=");

Serial.println(numdata[i]);

analogWrite(PWMPin[i],numdata[i]);

numdata[i]=0;

}

mark=0;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1