首页

Arduino串行通信

在前面的教程中,我们已经看到了如何为我们自己的电路编写草图。我们还看到了一些新的函数,以及如何根据我们的需求使用这些函数。在本教程中,我们将看到一个名为串行通信的新主题。我们将看到如何在Arduino UNO和计算机之间传输数据。

在深入本教程之前,我们首先讨论什么是一般的沟通。通信就是两个设备之间的信息交换。在这里,信息只是数据,可以是文本文档、图像、音频或视频文件等任何东西。数据可以在两个系统或设备之间发送或接收,它以位的形式,即0和1。

Arduino串行通信

在两台设备之间传输数据的协议有很多种,但所有这些协议都是基于并行通信或串行通信的。

在Electronicshub中选择您想学习的下一组Arduino项目 Arduino项目»

并行通信是一种使用更多的数据线同时传输多个位数据的方法。一些常见的并行通信的例子是老式的打印机和硬盘。即使是现代计算机中的ram也使用并行通信,因为它通过为每个要传输的比特使用单独的通道来提高数据传输的速度。

但是这些并行通信中的高速数据传输需要更多的电线数量,而且通信距离非常短,即它们不能用于远程通信。

除了像RAM、显卡和其他PCI连接等板上通信外,所有其他设备,如打印机、硬盘、以太网等都使用串行通信。这是因为,与并行通信不同,串行通信根据协议的不同,每次通过两到四条线路传输一位数据。

尽管串行通信中的数据传输速度比并行通信慢得多,但这个速度对于像打印机、硬盘、鼠标等设备来说已经足够了。

串行通信相对于并行通信的主要优点是通信距离长,通信所需的电线数量少,降低硬件复杂性等。

对于Arduino, Arduino UNO(或任何其他板)与计算机之间的通信是串行通信。

Arduino串行通信

该串行通信的主要目的是将计算机绘制的草图传输到Arduino,将信息发送到计算机等。

最常见的串行通信协议类型是UART即通用异步收发机。UART连接需要一个9针DE - 9连接器。但是,大多数现代电脑和笔记本电脑不包括这些COM端口。因此,如果我们想连接我们的微控制器8051, AVR或ARM,我们需要使用外部串行到USB转换器。

但Arduino UNO有一个板载串行到USB转换器,因此我们可以直接连接Arduino到计算机。使用这个USB连接和Arduino IDE,我们可以向Arduino发送数据或从Arduino接收数据。这些数据可以通过Arduino IDE中的Serial Monitor进行监控。

现在我们对串行通信有了一定的了解,我们编写了Arduino和计算机之间的通信程序。为此,我们将修改我们在上一个教程中使用的按钮- LED程序。

Arduino串行通信

在这个草图中,只要按下按钮,连接到Arduino的LED就会打开。在本教程中,我们将执行相同的操作,并附加一个任务,即将按钮的状态转移到计算机上,并将其打印到终端或串行显示器上。

在Arduino环境中,为了开始或启动串行通信,我们需要使用预定义的“serial .begin”函数。

系列。Begin是一个函数,用于开始串行通信并设置通信的数据传输速率。

Serial的语法。开始是系列。开始(波特率);

在语法中,波特率表示我们在一秒内要传输多少位。波特率的单位为bps,常用的取值有9600bps、19200bps、115200bps等。

大多数设备的首选波特率是9600 bps, Arduino串行终端的默认值也相同。因此,在草图中,我们将通过书写初始化串行通信系列。开始(9600);在setup函数中。

Arduino串行通信

初始化串口通信后,下一步就是向Arduino的串口终端发送数据,数据将显示在计算机屏幕上。为此,我们需要使用另一个名为" Serial.println "的函数。

使用串行。println函数,我们可以从Arduino传输数据到计算机,可以在串行显示器上看到。Serial的语法。println函数系列。println(“数据”);

代替串行中的数据。Println函数,我们必须写入要传输的实际数据。例如,如果我们想将数据传输为“Train no: 1234”,那么我们必须提交Serial。println("车次:1234 ");

回到本教程,在按钮- LED程序中,我们在检查“if - else”语句中按钮的状态后打开LED。出于本教程的目的,我们将在打印串行监视器中按钮的状态时执行相同的操作。

Arduino串行通信

修改后的草图如上图所示。在这个草图中,我们修改了“if - else”语句,以根据按钮的状态发送必要的数据。如果" If "语句中的条件为真,即如果按下按钮,则LED打开,同时按钮的状态也以"按下按钮"的形式传递给计算机。同样,当条件为假时,LED关闭,串行数据以“按钮未按”的方式传输。

在下一课中,我们将利用Arduino的模拟输入特性和Arduino的PWM功能,继续探索Arduino的特性。

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map