Arduino - 通讯

首页 / Arduino / Communication

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

并行通讯

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

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

来源:LearnFk无涯教程网

并行通讯

串行类型

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

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

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

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

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

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

同步位

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

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

同步位

数据位

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

奇偶校验位

用户可以选择是否应该有奇偶校验位,如果是,则选择奇偶校验是奇数还是偶数,如果数据位中的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 - 通讯》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

深入浅出gRPC -〔李林锋 - 6讲〕

Linux性能优化实战 -〔倪朋飞 - 65讲〕

深度学习推荐系统实战 -〔王喆 - 44讲〕

爆款文案修炼手册 -〔乐剑峰 - 33讲〕

如何在不同的子图中绘制对,侧面有差异

react-native android项目未找到错误

如何在保持初始和最终导数相同的同时zoom 贝塞尔曲线 t 值?

如何用来自lower.tri的匹配整数填充矩阵的upper.tri?

如何求和每个月和年的值总数并通过 R 中的其他列加入

'str' 对象没有属性 'apply' 与 sklearn

视频推荐〔Arduino - 1-10 数字输出1 - 学用led〕

更多视频 »
好记忆不如烂笔头。留下你的足迹吧 :)