如何在Arduino中使用Serial.println在同一行打印文本和变量值

18

我有这段代码:

 Serial.print("x:");
 Serial.print(x);
 Serial.print(" y: ");
 Serial.println(y);

并且可以正常工作。以下是一个输出的示例:

x:41 y: 31

但是我想知道是否有一种方法可以用类似以下的方式将这四个句子写成一个句子:

Serial.println("x:"+x+" y:"+y);

返回错误的:

invalid operands of types 'const char*' and 'const char [4]' to binary 'operator+'

有任何想法吗?提前致谢。


1
我找到了解决方案:Serial.println(String("x:") + x + String("y:") + y); - Salvador Rueda
5个回答

34

有一种更快的方法: 只需将您的输出直接转换为字符串:

Serial.println((String)"x:"+x+" y:"+y);

6

字符串拼接在需要将值和描述组合成一个字符串通过串口通信显示时非常有用。

 int sValor = analogRead(A5); 
 String StrUno = "Valor Sensor N°5: ";
 String StrDos = StrUno + sValor ;
 Serial.println(StrDos);  

我们可以将多个值连接起来,形成一个包含所有数据的字符串,然后发送它。这也可用于液晶显示屏。

3
在PlatformIO中,Arduino的使用非常好(例如):
Serial.println("R: " + String(variableR) + ", G: " + String(variableG) + ", B: " + String(variableB));

2
无论如何,都需要进行从int到String的显式转换,就像在Guest的帖子中所看到的那样——以下方式对我有效:
String(intVariable)

在用户3923880的帖子中,缺失了以下内容,导致我的Arduino IDE(版本1.8.13)无法正常工作。以下代码是我成功运行的示例:

String outString = stringVar1 + '\t' + String(time) + '\n'; 
Serial.print(outString);

使用\t作为制表符(delimiter),\n作为换行符(line break)。


0

另一种可能性是这样的:

char buffer[40];
sprintf(buffer, "The %d burritos are %s degrees F", numBurritos, tempStr);
Serial.println(buffer);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接