找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lxf 于 2020-8-15 13:57 编辑

第11课 串口读取数据


目标

1、掌握打印和打印换行的使用
2、使用FOR循环语句演示如何使用不同的格式向Arduino IDE程序的串口监视器发送数据

实验材料

Arduino UNO开发板
配套USB数据线
Arduino IDE软件

图片1.png

内容

使用FOR循环语句演示如何使用不同的格式向Arduino IDE程序的串口监视器发送数据

serial(串行通信)

串行端口用于Arduino和个人电脑或其他设备进行通信,所有Arduino控制器都有至少一个串行端口(也称为UART或者USART),个人电脑可以通过USB端口与Arduino的引脚0(RX)和引脚1(TX) 进行通信,所以当Arduino的引脚0和引脚1用于串行通信功能时,Arduino的引脚0和引脚1是不能做其他用的,也可以通过Arduino开发环境软件中的串口监视器来与Arduino 控制器进行串口通信,你只需要点击Arduino IDE软件中的“串口监视器”按钮就可以打开串口监视器。

Serial(串行通信)函数
available         获取从串口读取有效的字节数(字符)
begin              将串行数据传输速率设置为位/秒(波特)
end                 停用串行通信,使RX和TX引脚用于一般输入和输出
find                 从串行缓冲器中读取数据
findUntil          从串行缓冲区读取数据,直到找到一个给定的长度或字符串终止位
flush                等待超出的串行数据完成传输
peek                返回传入的串行数据的下一个字节(字符),而不是进入内部串行缓冲器调取
print                以人们可读的ASCII文本形式打印数据到串口输出
println             打印数据到串行端口,输出人们可识别的ASCII码文本并回车(ASCII,或\r)及换行(ASCII10,或\n)
parselnt           查找传入的串行数据流中的下一个有效的整数
parseFloat        命令从串口缓冲区返回第一个有效的浮点数
read                  读取传入的串口的数据
readBytes         从串口读取字符到一个缓冲区
readBytesUntil 将字符从串行缓冲区读取到一个数组
write                 写入二级制数据到串口

print()

以人类可读的ASCII码形式向串口发送数据,该函数有多种格式,整数的每一数位将以ASCII码形式发送,浮点数同样以ASCII码形式发送,默认保留小数点后两位,字节型数据将以单个字符形式发送,字符和字符串会以其相应的形式发送,例如:
Serial.print(78) 发送 “78”
Serial.print(1.23456) 发送 “1.23”
Serial.print(‘N’) 发送 “N”
Serial.print(“Hello world.”) 发送 “Hello world.”
此指令也可以通过附加参数来指定数据的格式,这个允许的值为:BIN (binary二进制), OCT (octal八进制), DEC (decimal十进制), HEX (hexadecimal十六进制),对于浮点数,该参数可以指定小数点的位数。例如:
Serial.print(78, BIN) 发送 “1001110”
Serial.print(78, OCT) 发送 “116”
Serial.print(78, DEC) 发送 “78”
Serial.print(78, HEX) 发送 “4E”
Serial.println(1.23456, 0) 发送 “1”
Serial.println(1.23456, 2) 发送 “1.23”
Serial.println(1.23456, 4) 发送 “1.2346”

语法

Serial.print(val)
Serial.print(val, format)

参数

val: 要发送的数据(任何数据类型)
format: 指定数字的基数(用于整型数)或者小数的位数(用于浮点数)

返回值

size_t (long): print()返回发送的字节数(可丢弃该返回值)

println()

以人类可读的ASCII码形式向串口发送数据,类似print()指令,但是有换行。

语法

Serial.println(val)
Serial.println(val, format)

参数

val: 要发送的数据(任何数据类型)
format: 指定数字的数据形式或小数的位数(用于浮点数)

返回值

size_t (long): println()返回发送的字节数(可丢弃该返回值)

示例程序

  1. int x = 0;    // 定义整型变量X为0
  2. void setup() {
  3.   Serial.begin(9600);      // 打开串口通讯
  4. }
  5. void loop() {  
  6.   Serial.println("NO");       // 打印文字标志
  7.   Serial.print("Format");       // 打印文字标志
  8.   Serial.print("\t");         //空格   
  9.   Serial.print("DEC");       // 打印文字标志
  10.   Serial.print("\t");      
  11.   Serial.print("HEX");       // 打印文字标志
  12.   Serial.print("\t");  
  13.   Serial.print("OCT");     // 打印文字标志
  14.   Serial.print("\t");
  15.   Serial.print("BIN");      // 打印文字标志
  16.   Serial.print("\t");
  17.   Serial.println("");    //换行
  18.   for(x=0; x< 64; x++){   
  19.     //通过不同格式显示
  20.     Serial.print(x);       // 输出ASCII编码的十进制数字,与"DEC"相同
  21.     Serial.print("\t");   
  22.     Serial.print(x, DEC);  // 输出ASCII编码的十进制数字
  23.     Serial.print("\t");   
  24.     Serial.print(x, HEX);  // 输出ASCII编码的十六进制数字
  25.     Serial.print("\t");   
  26.     Serial.print(x, OCT);  // 输出ASCII编码的八进制数字
  27.     Serial.print("\t");   
  28.     Serial.println(x, BIN);  // 输出ASCII编码的二进制数字,然后换行                          
  29.     delay(500);            //延迟500毫秒
  30.   }
  31.   Serial.println("");      // 再次换行
  32. }
复制代码

运行结果

程序运行后,串口监视器显示结果如下:

图片2.png

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册