在Arduino(ESP32)中的那些串口打印函数
目录
前言
在代码编译调试过程中,使用串口打印数据是必须的。常规C语言环境使用的是printf()
函数。那在Arduino中呢?printf()
也是可用的,它与C/C++标准库中的函数有相同的功能。但是,在Arduino编程中,并不直接使用 printf()
来进行打印输出,而是使用Arduino库提供的专门函数来实现。
以下是在Arduino中常用的打印输出函数:Serial.print()
与 Serial.println()
//Serial.print():
//这个函数可用于将文本、数字和变量以文本形式打印到串口监视器(通过USB或硬件串口)。
Serial.print("Hello"); //打印一个字符串。
Serial.print(123); //打印一个整数。
Serial.print(3.14); //打印一个浮点数。
Serial.println(); //与 Serial.print()函数类似,但会在打印完成后自动添加换行符。
Serial.println("Hello"); //打印一个带换行的字符串。
Serial.println(123); //打印一个带换行的整数。
Serial.println(3.14); //打印一个带换行的浮点数。
函数区别
当在Arduino开发中,我们来比较 printf()
与 Serial.print()
、 Serial.println()
,它们有以下区别:
-
语法和参数传递:
printf()
:是C/C++的标准库函数,通常需要使用格式化字符串指定输出的格式,并根据格式化字符串参数传递变量或具体数值。-
Serial.print()
和Serial.println()
:是Arduino提供的库函数,不需要使用格式化字符串,可以直接打印字符串、数字或变量。这些函数会自动将传递的参数转换为字符串进行输出。
-
输出目标:
-
printf()
: 通常将结果输出到控制台窗口(例如命令行界面)。printf() -
Serial.print()
和Serial.println()
:将结果输出到Arduino的串口监视器,即通过USB连接到计算机上的串口调试工具。
-
-
功能和扩展性:
-
printf()
: 提供了更多的格式化选项,可以按照特定的格式输出字符串、整数、浮点数等,并支持更复杂的格式化操作。 -
Serial.print()
和Serial.println()
:在Arduino开发中,这些函数针对常见的输出需求提供了简化和易用性,但功能上相对较为有限,无法直接提供复杂的格式化输出。
-
-
内存的占用:
printf()
: 是标准库函数,由于其功能较为强大,可能会占用更多的程序存储空间。Serial.print()
和Serial.println()
:是Arduino库函数,为了适应资源受限的环境,它们通常会对内存占用进行优化,并使用较少的存储空间。
综上所述,printf()
是标准库提供的功能强大、灵活的打印函数,适用于大型项目或复杂的输出需求。而 Serial.print()
和 Serial.println()
函数是Arduino提供的简化版打印函数,适用于常见的打印输出,在Arduino开发中使用较为普遍且易于实现。
函数使用
Serial.print()
是Arduino编程中常用的函数,用于在串口监视器中打印输出。它的作用是将数据以文本形式打印到串口。下面是 Serial.print()
函数的使用示例:
void setup() {
// 初始化设备和设置
Serial.begin(9600);
}
void loop() {
// 主循环
int sensorValue = analogRead(A0); // 读取模拟引脚A0的值
float voltage = sensorValue * (5.0 / 1023.0); // 将读数转换为电压值
Serial.print("Sensor reading: "); // 打印文本
Serial.print(sensorValue); // 打印传感器读数
Serial.print("\tVoltage: "); // 打印文本
Serial.print(voltage, 2); // 打印电压值(限制小数点后2位)
delay(1000); // 延时1秒
}
Serial.println()
是Arduino编程中常用的函数,用于在串口监视器中打印输出。它的作用是将数据以文本形式打印到串口,并在文本后添加换行符。下面是 Serial.println()
函数的使用示例:
void setup() {
// 初始化设备和设置
Serial.begin(9600);
}
void loop() {
// 主循环
int sensorValue = analogRead(A0); // 读取模拟引脚A0的值
float voltage = sensorValue * (5.0 / 1023.0); // 将读数转换为电压值
Serial.print("Sensor reading: "); // 打印文本
Serial.println(sensorValue); // 打印传感器读数,并在末尾添加换行符
Serial.print("Voltage: ");
Serial.println(voltage, 2); // 打印电压值(限制小数点后2位),并在末尾添加换行符
delay(1000); // 延时1秒
}
要在Arduino中只使用一次串口操作,同时打印字符和变量,可以使用+操作符将字符和变量连接在一起,然后再打印输出。以下是一个示例:
int num = 10;
Serial.println("Value of num is: " + String(num));
更多推荐
所有评论(0)