0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino串行

454398 来源:网络整理 作者:网络整理 2019-11-18 17:21 次阅读

第1步:

说明

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

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

这是Arduino 1.0.1中引入的。

如何使用Arduino串行

语法

所有板: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()返回写入的字节数,尽管读取该数字是可选的

示例:

/*

interwetten与威廉的赔率体系 输入

读取模拟输入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

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

    关注

    0

    文章

    237

    浏览量

    33846
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187056
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino实现CAN总线通信呢

    CAN(Controller Area Network)总线是一种常用于汽车和工业控制系统的串行通信协议,以其高可靠性和实时性而闻名。Arduino,作为一种流行的开源微控制器平台,可以通过附加
    的头像 发表于 12-23 09:06 137次阅读

    Arduino Nano Matter开发板正式上市

    Silicon Labs(芯科科技)和Arduino在近日共同宣布Arduino Nano Matter开发板现已正式上市。这是延续今年3 月芯科科技和Arduino释出Arduino
    的头像 发表于 12-10 13:50 199次阅读

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino开发板,如Arduino Uno
    的头像 发表于 11-22 09:24 526次阅读

    stm32与Arduino的比较

    在微控制器的世界里,STM32和Arduino是两个经常被提及的名字。STM32是一系列由STMicroelectronics生产的高性能微控制器,而Arduino则是一个开源电子原型平台,基于易于
    的头像 发表于 11-19 15:45 848次阅读

    如何使用Arduino实现CAN总线通信

    CAN总线(Controller Area Network)是一种多主控制的串行通信协议,广泛应用于汽车电子、工业自动化等领域。它以其高可靠性、实时性和灵活性而受到青睐。Arduino作为一个
    的头像 发表于 11-12 10:09 846次阅读

    ESP-12 ESP8266如何通过I2C将SSID和RSSI信息发送到RPi / Arduino

    我正在寻找我的 ESP-12 ESP8266,以便通过 I2C 将 SSID 和 RSSI 信息发送到 RPi / Arduino。关于如何进行的任何建议? 我查看了文档,不禁注意到 SSID
    发表于 07-22 07:36

    ESP8266为什么不响应Arduino

    arduino,其中从串行监视器接收的任何命令都会转发到连接到 esp8266 的串行器(mega 有 4 个硬件串行端口)。然而,即使是一个简单的“AT”命令也不会从 wifi
    发表于 07-16 06:39

    ESP-WROOM-02D为什么无法响应AT命令?

    我有两个不同的模块,它们在使用不同应用程序(我使用 Arduino 串行)和另一个 Linux 应用程序的不同计算机上以相同的方式响应,并且总是得到相同的结果,即没有响应。我尝试了不同的变体,即新行
    发表于 07-15 07:32

    ESP8266 Huzzah不响应AT命令的原因?

    我的 esp8266 Huzzah 分线板最近使用 esp 闪存工具,使用 NONOS SDK v2.0.0 重新刷新。我认为这将允许 esp 在通过 arduino 串行监视器发送 AT 命令
    发表于 07-11 08:21

    ESP8266-12E和Arduino框架时,在建立串行连接时必须将GPIO15拉至低电平才能工作,为什么?

    使用 NodeMCU (ESP8266-12E) 和 Arduino 框架时,我注意到在建立串行连接时必须将 GPIO15 拉至低电平。否则串行连接无法正常工作。这是什么原因,有没有一份文件可以让我阅读?
    发表于 07-10 07:43

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用?
    发表于 06-12 07:21

    arduino如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发板上持续运行,并且只有在程序被重新上传或开发板断电重启时才会停止。然而,在某些情况下,你可能需要在程序执行过程中停止或
    的头像 发表于 02-14 16:24 4539次阅读

    arduino中while循环怎么跳出

    Arduino 是一款开源的硬件平台,广泛应用于各种物联网和嵌入式系统项目。在 Arduino 上编写代码时,循环结构起到了至关重要的作用。而其中的 while 循环更是常用于需要根据特定条件重复
    的头像 发表于 02-14 16:22 2587次阅读

    2023年Arduino开放原码报告:持续茁壮的Arduino生态系!

    所谓出钱就是买一片Arduino开发板或是付费订阅Arduino Cloud云端服务,或单纯资金赞助;出力就是撰写Arduino相关的程序并无私的分享程序代码或回报错误或投入翻译等,笔者即有若干翻译新版
    的头像 发表于 01-25 16:45 1446次阅读
    2023年<b class='flag-5'>Arduino</b>开放原码报告:持续茁壮的<b class='flag-5'>Arduino</b>生态系!

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 7次下载