/**/

Arduino - 通讯(Communication)

首页 / Arduino入门教程 / Arduino - 通讯(Communication)

已经定义了数百种通信协议来实现此数据交换,每个协议可以分为两类之一:并行或串行。

并行通讯

Arduino和外围设备之间通过输入/输出端口的并行连接是距离短至几米的理想解决方案,但是,在其他情况下,如果需要在两个设备之间创建较长距离的通信,则无法使用并行连接,并行接口同时传输多个位。

并行通讯

串行类型

串行通信可以进一步分类为-

  • 同步  -  已同步的设备使用相同的时钟,并且它们的时序彼此同步。

  • 异步  -  异步设备具有自己的时钟,并由先前状态的输出触发。

如果为所有连接的设备提供相同的时钟,则它们是同步的,如果没有时钟线,则它是异步的。

异步串行协议具有许多内置规则,这些规则不过是有助于确保健壮且无错误的数据传输的机制。

  • 同步位(Synchronization bits)
  • 数据位(Data bits)
  • 奇偶校验位(Parity bits)
  • 波特率(Baud rate)

同步位

同步位是随每个数据包一起传送的两个或三个特殊位,它们是开始位和停止位,正如它们的名字一样,这些位分别标签数​​据包的开始和结束。

起始位始终由一条从1到0的空闲数据线表示,而停止位将通过将该行保持在1来转换回空闲状态。

无涯教程网

同步位

数据位

每个数据包中的数据量可以设置为5到9位之间的任意大小,当然,标准数据大小是您的基本8位字节,但其他大小也有其用途。 7位数据包的效率可能高于8位,尤其是在您仅传输7位ASCII字符的情况下。

链接:https://www.learnfk.comhttps://www.learnfk.com/arduino/arduino-communication.html

来源:LearnFk无涯教程网

奇偶校验位

用户可以选择是否应该有奇偶校验位,如果是,则选择奇偶校验是奇数还是偶数,如果数据位中的1的位数为偶数,则奇偶校验位为0。奇偶校验正好相反

波特率

术语波特率用于表示每秒传输的位数[bps],请注意,它是指位,而不是字节,协议通常要求将每个字节与几个控制位一起传输。这意味着串行数据流中的一个字节可以包含11位。如果波特率是300 bps,则每秒最多可以传输37个字节和最少27个字节。

以下代码将使Arduino在启动时发送问候。

void setup() {
   Serial.begin(9600); //将串口库波特率设置为 9600
   Serial.println("hello Learnfk"); //打印你好Learnfk
}

void loop() {

}

上传到Arduino之后,打开Arduino IDE右上角的串行监视器,在串行监视器的顶部框中键入任何内容,然后按发送或键盘上的回车键。这将向Arduino发送一系列字节。

以下代码将使Arduino根据提供的输入输出输出。

void setup() {
   Serial.begin(9600); //将串口库波特率设置为 9600
}

void loop() {
   if(Serial.available()) //如果可用于读取的字节数(字符) 
      Serial.print("I received:"); //我收到的打印件
      Serial.write(Serial.read()); //发送您阅读的内容
   }
}

请注意, Serial.print 和 Serial.println 将发回实际的ASCII码,而 Serial.write 将发回实际的文本。

这一章《Arduino - 通讯(Communication)》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持

好记忆不如烂笔头。留下你的足迹吧 :)

猜你喜欢

算法面试通关40讲 -〔覃超〕

Elasticsearch核心技术与实战 -〔阮一鸣〕

技术面试官识人手册 -〔熊燚(四火)〕

程序员的测试课 -〔郑晔〕

洗牌测验有什么技巧吗?

通用联合类型执行交集类型的棘手输入问题

在 Python 中使用 Streamlit 的待办事项应用程序可能存在什么问题?

为什么在我超过 1 小时标记后你会卡住最后的秒数

chart.js PHP 到 JS 字符串转换问题

函数扩展具有任意类型属性与未知类型属性的对象

视频教程

Arduino - 1-0 教程介绍 更多视频教程 »