简单易懂的Arduino的串口通讯

  • 自白
  • 启动串口通讯
  • 判断串口接收数据的语句
  • 实践
    • 一个三位数整数
    • 三个三位数整数

自白

我是一名大四应届生,第一次写这个博客,可能很多地方写的不是那么好,也有可能有些理解不对,所以请多谅解!写这篇文章是因为我发现Arduino的串口通讯相关的文章对很多小白不太友好,我这篇文章是我自己实践过后得出的简单易懂的教程,之后会继续推出Arduino串口通讯控制外设的文章!

启动串口通讯

Serial.begin()

描述:
开启串口,通常置于setup()函数中。

原型:
Serial.begin(speed)
Serial.begin(speed, config)

参数:
speed:波特率,一般取值9600,115200等。
config:设置数据位、校验位和停止位。默认SERIAL_8N1表示8个数据位,无校验位,1个停止位。

返回值:
无。

void setup() {   Serial.begin(9600); //启动串行通讯
}

判断串口接收数据的语句

Serial.available()

描述:
判断串口缓冲区的状态,返回从串口缓冲区读取的字节数。

原型:
Serial.available()

参数:
无。

返回值:
可读取的字节数。

Serial.readBytesUntil()

描述:
从串口读取指定长度的字符到缓存数组。
当函数读取到终止字符后,会立即停止函数执行。

原型:
Serial.readBytesUntil(character, buffer, length)

参数:
character:终止字符。
buffer:缓存变量。
length:设定的读取长度。

返回值:
返回存入缓存的字符数。

实践

一个三位数整数

假如我们要从串口接收一个三位数的整数并且通过回车符就能实现接收完毕
首先我们需要准备三个参数变量的声明

int value = 0;
char input[6];
char nextinput = '\n';

然后我们需要限制在串口缓存区必须有数据,不然一直执行空语句

while(Serial.available()<=0) {}

最后我们需要判断在当串口缓存区有数据时则开始执行我们的接收语句

if(Serial.available()>0) { Serial.readBytesUntil(nextinput,input,4);value = atoi(input); //强制转换字符串数组input为int型变量value
}

三个三位数整数

假如我们要从串口接收三个三位数的整数并且通过回车符就能实现接收完毕
首先我们需要准备四个参数变量的声明

int value[3];
char input1[6];
char input2[6];
char input3[6];
char blanket = ' ';
char nextinput = '\n';

然后我们需要限制在串口缓存区必须有数据,不然一直执行空语句

while(Serial.available()<=0) {}

最后我们需要判断在当串口缓存区有数据时则开始执行我们的接收语句

if(Serial.available()>0) { Serial.readBytesUntil(blanket,input1,4);Serial.readBytesUntil(blanket,input2,4);Serial.readBytesUntil(nextinput,input3,4);value[0] = atoi(input1); //强制转换value[1] = atoi(input2); //强制转换value[2] = atoi(input3); //强制转换
}

文章中有些语句的解释用到原作者的一篇文章:
Arduino基础入门篇23—串口通讯.

还有Arduino官网串口使用指南
Arduino官网串口使用指南.

LYL程序员小白的理解之简单易懂的Arduino的串口通讯相关推荐

  1. 程序员你真的理解final关键字吗?

    文章目录 1.修饰类 2.修饰方法 3.修饰变量 4.final变量修饰变量(成员变量.局部变量) 4.1 final修饰成员变量: 4.2 final修饰局部变量: 5.final变量和普通变量的区 ...

  2. 职场术语揭秘:程序员小白必懂的互联网暗语!你知道几个?

    随着互联网的发展, 许多新的职场术语也随之产生.对于程序员小白来说, 必须了解这些术语以更好地适应职场.以下是一些常见的互联网职场术语及其含义: MVP: 最小可行性产品.这是一个新产品最小可行的版本 ...

  3. 上帝视角:程序员为什么需要理解 CPU?

    来源 | 码农的荒岛求生(ID:escape-it) 可能有的同学会问,程序员写代码就好了,为什么需要去理解CPU啊?不嫌累啊?啊?啊?你倒是说啊. 计算机系统 != 汉堡包 在之前的文章中我把计算机 ...

  4. c++ include 路径_程序员应如何理解include

    相信很多同学在学习C/C++后都有这样的疑问,#include这句话到底是怎么意思?这句话的背后隐含了什么?我们常用的stdio.h存放在了哪里? 这篇文章就来解答这个问题. 谁来处理头文件 有上述疑 ...

  5. 编程入门不知道怎么学?程序员小白来给你支招

    最近有很多朋友私信小编,说想学编程,但是自己基础不好,很多东西都不会,看视频,遇到难点,也不知道怎么解决,甚至有时候竟为了找错误,花了一上午或一下午的时间,作为过来人的小编,确实很明白这些朋友的心情, ...

  6. Python程序员必须深刻理解的几个Warning

    Python程序员必须深刻理解的几个Warning 在Python编程中,很多时候我们会看到一些Warning输出,这些信息通常是针对我们的代码中存在的问题或潜在的风险.但是有时候我们并不希望看到这些 ...

  7. 程序员应如何理解多态

    面向对象编程领域有个非常重要的概念,那就是多态,但是你真的理解这到底是什么意思吗?程序员该如何理解多态? 英文中的多态 多态一词其英文为"polymorphism",在讲解多态之前 ...

  8. 程序员“小白”打野升级指南,值得收藏

    刚踏入程序员这个行业的"小白",你是不是会时常觉得与其他开发者相比较,你太笨拙无能?当经理提需求时自己无法完成?想退缩了?其实别担心,这种想法是正常的,刚进入工作领域的时候,我们会 ...

  9. 从Java程序员的角度理解加密的那些事

    前言 在我们日常的程序开发中,或多或少会遇到一些加密/解密的场景,比如在一些接口调用的过程中,我们(Client)不仅仅需要传递给接口服务(Server)必要的业务参数,还得提供Signature(数 ...

最新文章

  1. Creative Web Typography Styles | Codrops
  2. 【PHPExcel】生成xls文件并下载
  3. 关于机器学习实战,那些教科书里学不到的12个“民间智慧”
  4. java 进程描述_java 进程和线程
  5. eureka注册中心HA集群搭建
  6. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践
  7. 智能硬件创业2周内快速做出产品原型
  8. c语言单向循环链表实现增删,C语言单向非循环链表增删查改实现
  9. Python基础知识回顾及scrapy框架爬虫基础
  10. 【新发现】不用苹果开发账号就能申请ios证书真机调试
  11. multisim 9013、8050免费下载
  12. Oracle,emc,emulex联合测试T10
  13. c语言aps审核,APS考官最讨厌的几类人
  14. 微软官方工具_微软官方英文写作在线工具,完全免费
  15. 个人居间服务,劳务费用怎样合理节税?自然人代开3个点
  16. 项目管理100问 | NO.6 如何为项目制定里程碑?
  17. SpringCloudGateway路由定义存至Mysql数据库
  18. 齐岳定制|Cyclopropene-PEG-Xylan|环丙烯-聚乙二醇-木聚糖
  19. 收藏-《连线》杂志:Web已死 Internet永生(全文)
  20. nova launcher_如何访问Nova Launcher的“实验室”设置以进行实验功能

热门文章

  1. 超低功耗LoRa无线通信应用实践
  2. 信息熵、自信息与互信息
  3. html 的函数写法,react中函数的不同写法的区别是什么?
  4. ElementUI 表单单个验证
  5. 计算机动漫设计需要学什么,计算机动画制作专业好学吗?都有哪些课程?
  6. MATLAB 平面线形变换 及验证多个点是否在同一直线
  7. 【底层逻辑】死囚试毒酒(改编)
  8. if条件句和switch条件句
  9. 字符串加密后md5为 0exxxx 的字符串
  10. 《C语言陷阱和缺陷》笔记