找回密码
 注册SCIFIFANS!
首页 科技专区 嵌入式开发 Arduino入门-基本函数介绍
12
返回列表 发新帖
楼主: skyone

Arduino入门-基本函数介绍

15
回复
10253
查看
[ 复制链接 ]

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
<
串口通信


简介

串口通信指的是Arduino开发板通过USB线与电脑通信,经常用于显示Arduino程序的运行状态、输入实时的指令等。此外,Arduino程序无法调试,因此串口通信就显得非常重要。
串口通信主要使用 Serial 类。

目录

  • Serial.begin
  • Serial.print
  • Serial.read
  • Serial.available
  • 其他方法
  • 软串口(未完待续)


使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
函数原型

void Serial.begin(long speed);
void Serial.begin(long speed, uint8_t config);作用

初始化串口,指定串口数据传播速率(波特率)
参数

  • pin
    指定引脚的编号,如: 10 , A0 等。
  • config
    可选,很少用到,可能的值如下:

    config可选配置
    数据位
    校验位
    停止位
    SERIAL_5N1
    5
    1
    SERIAL_6N1
    6
    1
    SERIAL_7N1
    7
    1
    SERIAL_8N1(默认配置)
    8
    1
    SERIAL_5N2
    5
    2
    SERIAL_6N2
    6
    2
    SERIAL_7N2
    7
    2
    SERIAL_8N2
    8
    2
    SERIAL_5E1
    5
    1
    SERIAL_6E1
    6
    1
    SERIAL_7E1
    7
    1
    SERIAL_8E1
    8
    1
    SERIAL_5E2
    5
    2
    SERIAL_6E2
    6
    2
    SERIAL_7E2
    7
    2
    SERIAL_8E2
    8
    2
    SERIAL_5O1
    5
    1
    SERIAL_6O1
    6
    1
    SERIAL_7O1
    7
    1
    SERIAL_8O1
    8
    1
    SERIAL_5O2
    5
    2
    SERIAL_6O2
    6
    2
    SERIAL_7O2
    7
    2
    SERIAL_8O2
    8
    2

示例

Serial.begin(9600);             // 一般将波特率设为9600
Serial.begin(9600, SERIAL_8E2); // 将串口波特率设为9600,数据位8,偶校验,停止位2。

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
函数原型

int HardwareSerial::available()
作用

获取串口接收到的数据个数,即获取串口接收缓冲区中的字节数。接受缓冲区最多可保存64 bytes的数据。
使用前必须用 Serial.begin() 初始化 Serial。

返回值

可读取的字节数

示例

int count = Serial.available();

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
函数原型size_t print(const __FlashStringHelper *);
size_t print(const String &);
size_t print(const char[]);
size_t print(char);
size_t print(unsigned char, int = DEC);
size_t print(int, int = DEC);
size_t print(unsigned int, int = DEC);
size_t print(long, int = DEC);
size_t print(unsigned long, int = DEC);
size_t print(double, int = 2);
size_t print(const Printable&);

size_t println(const __FlashStringHelper *);
size_t println(const String &s);
size_t println(const char[]);
size_t println(char);
size_t println(unsigned char, int = DEC);
size_t println(int, int = DEC);
size_t println(unsigned int, int = DEC);
size_t println(long, int = DEC);
size_t println(unsigned long, int = DEC);
size_t println(double, int = 2);
size_t println(const Printable&);
size_t println(void);

作用
向串口打印数据
Serial.println() 比 Serial.print() 多一个换行。
使用前必须用 Serial.begin() 初始化 Serial。

参数

  • 数据
    就像C语言的 prinft() 一样。当然,似乎更像Java的 System.out.println()

返回值

输出的字符数

示例

string str = "Skyone!";
Serial.print("Hello,");
Serial.println(str);
// Hello,Skyone!

使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
函数原型int HardwareSerial::read();

作用
读取串口输入的数据

返回值
返回下一个字符串,就像C语言的 getc() 一样。

示例
char c = Serial.read();



使用道具 举报

该用户从未签到

10

主题

51

回帖

404

积分

Judgement

积分
404
本帖最后由 skyone 于 2021-7-5 15:37 编辑

Serial.end函数原型

void HardwareSerial::end()描述

结束串口通信。
无参数,无返回值。




Serial.find函数原型

bool find(char *target);
bool find(uint8_t *target);
bool find(char *target, size_t length);
bool find(uint8_t *target, size_t length);
bool find(char target);作用

从串口缓冲区读取数据,直到读取到指定的字符串。
参数

  • target
    需要搜索的字符串或字符
  • length
    最多搜索的长度

返回值

Boolean型
  • True:找到
  • False:没有找到






findUntil()

从串口缓冲区读取数据,直到读取到指定的字符串或指定的停止符。

原型

bool Serial.findUntil(target, terminal)参数:

  • target
    需要搜索的字符串或字符
  • terminal
    停止符



返回值:

bool型数据,是否找到





flush()

等待正在发送的数据发送完成。

语法:

void Serial.flush()





parseFloat()

从串口缓冲区返回第一个有效的float型数据。

语法:

float Serial.parseFloat()返回值:

float 型数据





parseInt()

从串口流中查找第一个有效的整型数据。

语法:

int Serial.parseInt()返回值:

int 型数据





peek()

返回 1 字节的数据,但不会从接受缓冲区删除该数据。
与 read() 的不同之处在于 read() 读取数据后,会从接受缓冲区删除该数据。

语法:

int HardwareSerial::peek()返回值:

进入接受缓冲区的第一个字节的数据;如果没有可读数据,则返回-1


使用道具 举报

12
您需要登录后才可以回帖 登录 | 注册SCIFIFANS!

本版积分规则