Arduino通过串口与计算机交流

Arduino上与计算机通信最常用的方式就是串口通信,本文讲解下Arduino下使用串口以及使用串口接收发、发送数据。

在Arduino控制器上,串口都是位于0 (RX)和1 (TX)的两个引脚, Arduino 的USB口通过一个转换芯片(通常为ATmega16 u2)与这两个串口引脚连接。该转换芯片会通过USB接口在计算机上虚拟出一个用于与Arduino通信的串口。

当Arduino控制器使用USB线与计算机相连时,两者之间便建立了串口连接。通过此连接,Arduino控制器可与计算机相互传数据了。

Arduino中与串口相关的函数有Serial. begin()、Serial.available()、Serial.read()、Serial.println()和Serial.print()这五个函数;下面分别介绍如何使用串口。

一、串口初始化

要想使串口与计算机通信,需要先使用Serial. begin()函数初始化Arduino的串口通信功能,即 Serial.begin(speed); 其中参数speed指串口通信波特率,它是设定串口通信速率的参数。串口通信的双方必须使用同样的波特率方能正常进行通信。波特率可以设置为300、600、1200、2400、4800、9600、14400等,波特率越大,串口通信的速率也就越高。常用的波特率为9600。

二、串口输出

串口初始化完毕后,便可以使用Serial.print()Serial.println()函数向计算机发送数据了。函数的用法是:

  • Serial.print(val);   其中val为要输出的信息,各种类型的数据即可。
  • Serial.println(val);   与Serial.print()类似,不同的是Serial.println()函数会在输出指定数据后,再输出一组回车换行符。

串口输出示例程序:

int counter = 0;
void setup() {
  // put your setup code here, to run once:

Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

counter = counter + 1;
Serial.print(counter);
Serial.print(':');
Serial.println(" Hell World!");
delay(100);
}

下载程序到Arduino开发板,点开IDE右上角的窗口监视器,就可以看到串口的输出信息了。如下图:

三、串口接收数据

使用串口同样可以接收由计算机发出的数据。接收串口数据需要使用Serial. read()函数,用法是:

Serial.read();

调用该语句,每次都会返回1字节的数据,该返回值便是当前串口读到的数据。

使用串口时,Arduino会在SRAM中开辟一段大小为64 B的空间,串口接收到的数据都会被暂时存放在该空间中,称这个存储空间为缓冲区。使用Serial.available()函数检测缓冲区是否有可读数据,该函数的用法是:

Serial.available();

Serial.available()函数的返回值是当前缓冲区中接收到的数据字节数。在使用时,先检测缓冲区中是否有可读的数据,如果有,则使用Serial. read()函数读取,没有则跳过或者等待再读取。

串口读数据的示例程序如下:

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
if(Serial.available()>0){
  char ch=Serial.read();
  Serial.print(ch);
  }
}

程序下载到Arduino后,打开串口监视器,键入并发送任何信息,则会看到Arduino接收该信息,并且将同样的信息通过串口输出。

原创文章,转载请注明: 转载自科技爱好者博客

本文链接地址: Arduino通过串口与计算机交流 (http://blog.lxx1.com/2741)

如果博客对您有帮助,请给我 打赏


科技爱好者

工科学生大四在读,专业嵌入式开发,喜欢计算机,喜欢单片机,喜欢各种各样美好的东西,相信科技正在改变世界! 这是我的 个人博客

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.