同じ行のシリアル印刷、文字列、変数


8

「L 55」のような変数が後に続く文字列または1文字だけをシリアルモニターに出力するにはどうすればよいですか。


Arduinoのドキュメントを読んでくださいSerial.print
jfpoilpret 2015年

回答:


10
int Var = 55;
//Do it in 2 lines e.g.
Serial.print("L ");     // String
Serial.println(Var);    // Print Variable on same line then send a line feed

1

デバッグ出力の場合、次のように変数の名前と値の両方を出力するようにマクロを定義できます。

#define PRINTLN(var) Serial.print(#var ": "); Serial.println(var)

これを次のように使用します。

int x = 5;
PRINTLN(x);

// Prints 'x: 5'

これもいいです:

#define PRINT(var) Serial.print(#var ":\t"); Serial.print(var); Serial.print('\t')
#define PRINTLN(var) Serial.print(#var ":\t"); Serial.println(var)

このようにループで使用すると

PRINT(x);
PRINT(y);
PRINTLN(z);

次のような出力を出力します。

x:  3   y:  0.77    z:  2
x:  3   y:  0.80    z:  2
x:  3   y:  0.83    z:  2

1

ご回答ありがとうございます。これを作った...

#define DEBUG  //If you comment this line, the functions below are defined as blank lines.
#ifdef DEBUG    //Macros 
  #define Say(var)    Serial.print(#var"\t")   //debug print, do not need to put text in between of double quotes
  #define SayLn(var)  Serial.println(#var)  //debug print with new line
  #define VSay(var)    Serial.print(#var " =\t"); Serial.print(var);Serial.print("\t")     //variable debug print
  #define VSayLn(var)  Serial.print(#var " =\t"); Serial.println(var)  //variable debug print with new line
#else
  #define Say(...)     //now defines a blank line
  #define SayLn(...)   //now defines a blank line
  #define VSay(...)     //now defines a blank line
  #define VSayLn(...)   //now defines a blank line
#endif

if (some_condition) VSayLn(some_var);意図したとおりに機能しません。標準の修正は#define VSayLn(var) do { Serial.print(#var " =\t"); Serial.println(var); } while (0)です。Cf マクロで明らかに無意味なdo-whileおよびif-elseステートメントを使用するのはなぜですか?
エドガーボネット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.