Impression en série, chaîne et variable sur la même ligne


8

Comment puis-je imprimer sur le moniteur série une chaîne ou un seul caractère suivi d'une variable comme "L 55"


Lisez les documents Arduino pour Serial.print.
jfpoilpret

Réponses:


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

Pour l'impression de débogage, vous pouvez définir une macro pour imprimer à la fois le nom et la valeur d'une variable comme celle-ci:

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

que vous utilisez ensuite comme ceci:

int x = 5;
PRINTLN(x);

// Prints 'x: 5'

C'est aussi bien:

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

lorsqu'il est utilisé dans une boucle comme ça

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

imprime une sortie comme celle-ci:

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

1

Merci beaucoup pour vos réponses. J'ai fabriqué ça ...

#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);ne fonctionnera pas comme prévu. La solution standard consiste à #define VSayLn(var) do { Serial.print(#var " =\t"); Serial.println(var); } while (0). Cf Pourquoi utiliser des instructions do-while et if-else apparemment dénuées de sens dans les macros?
Edgar Bonet
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.