如何使用Arduino串行

电子说

1.2w人已加入

描述

第1步:

说明

指示指定的串行端口是否已就绪。

在基于32u4的板上(Leonardo,Yùn,ecc),如果((串行))指示USB CDC串行连接是否打开。对于所有其他实例,包括Leonardo上的if(Serial1),它将始终返回true。

这是Arduino 1.0.1中引入的。

串行

语法

所有板:if(Serial)

特定于Arduino Leonardo:if(Serial1)

特定于Arduino Mega的:if(Serial1)if(Serial2)if(Serial3)

参数

返回

布尔值:如果指定的串行端口为true,则返回true可用。仅在准备好之前查询Leonardo的USB CDC串行连接时,这将返回false。

示例:

void setup(){

//初始化串行并等待端口打开:

Serial.begin(9600);

while(!Serial){

;//等待串口连接。本地USB所需

}

}

void loop(){

//正常进行

}

步骤2:命令:Available()

描述

获取可用于从串行端口读取的字节数(字符)。这是已经到达并存储在串行接收缓冲区(包含64个字节)中的数据。 available()继承自Stream实用程序类。

语法

Serial.available( )

仅适用于Arduino Mega:Serial1.available()Serial2.available()Serial3.available()

参数

的返回 的

可读取的字节数

示例

int entryingByte = 0;//用于输入串行数据

void setup(){

Serial.begin(9600);//打开串行端口,将数据速率设置为9600 bps

}

void loop(){

//仅在接收数据时才发送数据:

if(Serial.available()》 0){

//读取传入的字节:

传入的字节= Serial.read();

////说说你得到了什么:

Serial.print(“我收到了:”);

Serial.println(incomingByte,DEC);

}

}

第3步:命令:AvailableForWrite()

说明

获取可用于在串行缓冲区中写入而不阻止写入操作的字节数(字符)。

的的语法 的

Serial.availableForWrite()

的仅限Arduino Mega :

Serial1.availableForWrite()

Serial2.availableForWrite()

Serial3.availableForWrite ()

步骤4:命令:Begin()

描述

设置串行的数据速率,以每秒比特数(波特)为单位数据传输。要与计算机通信,请使用以下费率之一:300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200。但是,您可以指定其他费率-例如,通过引脚0和1与需要特定波特率的组件进行通信。

可选的第二个参数配置数据,奇偶校验和停止位。默认值为8个数据位,无奇偶校验,一个停止位。

语法

Serial.begin(speed)Serial.begin(speed,config)

仅适用于Arduino Mega:Serial1.begin(速度)Serial2.begin(速度)Serial3.begin(速度)Serial1.begin(速度,配置)Serial2.begin(速度,配置)Serial3.begin(速度) ,配置)

参数

速度:以每秒比特数(波特)为单位-长config:设置数据,奇偶校验和停止位。有效值为:

SERIAL_5N1

SERIAL_6N1

SERIAL_7N1

SERIAL_8N1(默认值)

SERIAL_5N2

SERIAL_6N2

SERIAL_7N2

SERIAL_8N2

SERIAL_5E1

SERIAL_6E1

SERIAL_7E1

SERIAL_8E1

SERIAL_5E2

SERIAL_6E2

SERIAL_7E2

SERIAL_8E2

SERIAL_5O1

SERIAL_6O1

SERIAL_7O1

SERIAL_8O1

SERIAL_5O2

SERIAL_6O2

SERIAL_7O2

SERIAL_8O2

示例:

void setup(){

序列号.begin(9600);//打开串行端口,将数据速率设置为9600 bps

}

void loop(){}

第5步:命令:串行.find()

,点击 的描述

Serial.find( )从串行缓冲区读取数据,直到找到给定长度的目标字符串为止。如果找到目标字符串,则该函数返回true,如果超时则返回false。

Serial.find()从Stream实用程序类继承。

语法

Serial.find(target)

步骤6:命令:Peek()

描述

返回输入的串行数据的下一个字节(字符),而不会从内部串行缓冲区中删除它。也就是说,对peek()的连续调用将返回相同的字符,与对下一次对read()的调用一样。 peek()继承自Stream实用程序类。

语法

Serial.peek( )

仅Arduino Mega:

Serial1.peek()

Serial2.peek()

Serial3.peek()

步骤7:命令:Print()

描述

将数据作为人类可读的ASCII文本打印到串行端口。该命令可以采用多种形式。数字使用每个数字的ASCII字符打印。浮点数类似地以ASCII数字打印,默认为两位小数。字节作为单个字符发送。字符和字符串按原样发送。例如:

Serial.print(78)给出“ 78” Serial.print(1.23456)给出“ 1.23” Serial.print(‘N’)给出“ N” Serial.print(“ Hello world。 ”)给出“ Hello world”。第二个可选参数指定要使用的基本格式。允许的值为BIN(二进制或以2为底),OCT(八进制或以8为底),DEC(十进制或以10为底),HEX(十六进制或以16为底)。对于浮点数,此参数指定要使用的小数位数。例如:

Serial.print(78,BIN)给出“ 1001110” Serial.print(78,OCT)给出“ 116” Serial.print(78,DEC)给出“ 78” Serial.print( 78,HEX)给出“ 4E” Serial.println(1.23456,0)给出“ 1” Serial.println(1.23456,2)给出“ 1.23” Serial.println(1.23456,4)给出“ 1.2346”您可以传递闪存通过使用F()将字符串包装到Serial.print()中。例如:

Serial.print(F(“ Hello World”))要发送单个字节,请使用Serial.write()。

语法

Serial.print(val)Serial.print(val,format)

参数

val:要打印的值-任何数据类型

格式:指定数字基(对于整数数据类型)或小数位数(对于浮点类型)

返回

size_t(长):print()返回写入的字节数,尽管读取该字节数是可选的

示例 :

/*

对数据使用FOR循环并以各种格式打印数字。

*/

int x = 0;//变量

void setup(){

Serial.begin(9600);//以9600 bps打开串行端口:

}

void loop(){

//打印标签

串行。 print(“ NO FORMAT”);//打印标签

Serial.print(“ \ t”);//打印标签

Serial.print(“ DEC”);

Serial.print(“ \ t”);

Serial.print(“ HEX”);

Serial.print(“ \ t”);

Serial.print(“ OCT”);

Serial.print(“ \ t”);

Serial.print(“ BIN”);

Serial.print(“ \ t”);

for(x = 0; x 《64; x ++){//仅是ASCII图表的一部分,更改为适合

//将其打印成多种格式:

Serial.print(x);//打印为ASCII编码的十进制-与“ DEC”一样

Serial.print(“ \ t”);//打印标签

Serial.print(x,DEC);//打印为ASCII编码的十进制

Serial.print(“ \ t”);//打印标签

Serial.print(x,HEX);//打印为ASCII编码的十六进制

Serial.print(“ \ t”);//打印标签

Serial.print(x,OCT);//打印为ASCII编码的八进制

Serial.print(“ \ t”);//打印标签

Serial.println(x,BIN);//打印为ASCII编码的二进制文件

////然后使用“ println”添加回车符

delay(200);//延迟200毫秒

}

Serial.println(“”);//打印另一个回车符

}

步骤8:命令:Println()

描述

将数据作为人类可读的ASCII文本打印到串行端口,后跟回车符(ASCII 13或‘\ r’)和换行符(ASCII 10或‘\ n’)。此命令的格式与Serial.print()相同。

语法

Serial .println(val)串行.println(val,格式)

参数

val :要打印的值-任何数据类型

格式:指定基数(对于整数数据类型)或小数位数(对于浮点类型)

返回

size_t(长整数):println()返回写入的字节数,尽管读取该数字是可选的

示例:

/*

模拟输入

读取模拟输入0上的模拟输入,将值打印出来。

由Tom Igoe创建于2006年3月24日

*/

int AnalogValue = 0;//变量以保留模拟值

void setup(){

//以9600 bps打开串行端口:

Serial.begin(9600) ;

}

void loop(){

//读取引脚0上的模拟输入:

AnalogValue = AnalogRead(0 );

//以多种格式打印出来:

Serial.println(analogValue);//打印为ASCII编码的十进制

Serial.println(analogValue,DEC);//打印为ASCII编码的十进制

Serial.println(analogValue,HEX);//打印为ASCII编码的十六进制

Serial.println(analogValue,OCT);//打印为ASCII编码的八进制

Serial.println(analogValue,BIN);//打印为ASCII编码的二进制文件

////下次读取前延迟10毫秒:

delay(10);

}
       责任编辑:wv 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分