Arduino串口接收字符串_第1页
Arduino串口接收字符串_第2页
已阅读5页,还剩3页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Arduino串口接收字符串用惯Arduino串口传输的朋友都知道,Arduino的Serial.read()每次只能读一个字节,但是有时想进行字符串通讯,就很麻烦了。废话少讲,直接上完整例子:编译只要一块Arduino,不需要任何外置元件。用Arduino编译器的串口监视器即可看到结果,我们打什么文字进去,下面就会返回什么文字。Stringcomdata=""voidsetup()Serial.begin(9600);voidloop()while(Serial.available()>0)comdata+=char(Serial.read();delay(2);i

2、f(comdata.length()>0)Serial.println(comdata);comdata=""代码很简单,comdata是一个字符串类型变量。Serial.available()是当前串口缓冲池的数据量。Serial.read()是读缓冲池的语句,每次只能读一个字节。用了String类型变量,很简单的实现了字符到字符串的加入,还有字符串输出,赋值等麻烦问题,所以很简单的代码就能处理串口数据。特别留意的是读串口时的delay(2)不能删掉,否则串口缓冲区不够时间接受数据。即使调小延时也会出错。具体数值也可以实验决定。再提醒一个:comdata说是一个字符

3、串,也是一个数组,引用每个字的话可以用comdata0,comdata1。comdatan。如果我们要每个字节取出的话,可以每个引用。效果:输入什么字符串,输出就是什么。输入:按send之后:再附送一个例子,在串口输入1011101.的话,就会令Arduino的D2Dx引脚产生高/低电平,当然,一次发送的数据视Arduino引脚数而定,比如ArduinoUNO/nano之类的,只有D2D13十二个引脚。我们打12个数字就好。比如101101011010,如果中间有非0和1的字符,则自动跳过该位设置:比如122202221222这样。因为2不是允许范围内,就只设置D2/D6/D10的值了:Str

4、ingcomdata=""""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<comdata.length();i+)if(comdatai='0'|comdatai='1')d

5、igitalWrite(i+2,comdatai-'0');Serial.print("Pin");Serial.print(i+2);Serial.print("is");Serial.println(comdatai);comdata=""CCI3I"/AutoscrollpTlineending9600baudPSn;is1Pzn3is0Pin4isiPin5is1PintisOPin7is1PinSiE0Pin&is1Pin10is1Fin11is0Pin12is1Fzn13zs0雨kutos

6、crollITolineending9600baud再来一个:进阶版(有待测试)输入六个逗号分隔数比如:50,20,5,255,20,20就能令Arduino的PWM引脚(3,5,6,9,10,11):按照PWM值发光。所以逗号分割数必须是0255Stringcomdata=""""intnumdata6=0,PWMPin6=3,5,6,9,10,11,mark=0;voidsetup()for(inti=0;i<6;i+)pinMode(PWMPini,OUTPUT);Serial.begin(9600);voidloop()intj=0;whi

7、le(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<comdata.length();i+)if(comdatai=',')j+;elsenumdataj=numdataj*10+(comdatai-'0');comdata=String("");for(inti=0;i<6;i+)Serial.print("Pin");Serial.prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论