七、Arduino 串口的使用

Arduino与计算机通信最常用的方式就是串口通信
我们使用USB线连接Arduino Uno与计算机时,Arduino Uno会在计算机上虚拟出一个串口设备,此时两者之间便建立了串口连接。通过此连接,Arduino Uno便可与计算机互传数据。

使用串口与计算机通信,需要先使用Serial.begin() 初始化Arduino的串口通信功能。

Serial.begin(speed);

参数speed是指串口通信波特率,这是设定串口通信速率的参数。串口通信的双方必须使用同样的波特率,方能正常进行通信。
波特率是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如9600波特表示每秒发送9600bit的数据。通信双方需要使用一致的的波特率才能正常通信。Arduino串口通信通常会使用以下波特率:

300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200。

波特率越大,说明串口通信的速率越快。


串口输出
串口初始化完成后,我们便可以使用Serial.print() 或Serial.println() 向计算机发送信息了。

Serial.print(val);
Serial.println(val); //与print不同点是输出指定数据后回车

参数val是你要输出的数据,各种类型的数据均可。
下面的示例程序中,演示了使用串口输出数据到计算机:

int counter=0; // 计数器

void setup() {
// 初始化串口
  Serial.begin(9600);
}

void loop() {
// 每loop循环一次,计数器变量加1
counter = counter+1;
// 输出变量
Serial.print(counter);
// 输出字符
Serial.print( ':' );
// 输出字符串;
Serial.println("Hellow World");
delay(1000);
}

串口输入

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

Serial.read();

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

在使用串口时,Arduino Uno会在SRAM中开辟一段大小为256 bytes的空间,串口接收到的数据都会被暂时存放进这个空间中,这个存储空间,我们称之为缓冲区。当你调用Serial.read()语句时,Arduino便会从缓冲区取出一个字节的数据。

通常使用串口读取数据时,需要搭配Serial.available() 语句使用。

Serial.available();

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

void setup() {
  // 初始化串口
  Serial.begin(9600);
}

void loop() {
// 如果缓冲区中有数据,则读取并输出
if(Serial.available()>0)
  {
    char ch=Serial.read();
    Serial.print(ch);
  }
}

下载到开发板后效果如图:
在这里插入图片描述
在这里插入图片描述

大家可以思考一下去掉if语句会出现什么结果,为什么?

  • 3
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

litmeng

老板大气!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值