Silly Arduino question

If this is my code:

int sensorPin = 0;
int sensorValue = 5;

void setup(){
  Serial.begin(9600);
  Serial.println("Program is go.");
}

void loop(){
  // read the analog pin
  Serial.print("A/D value: ");
  Serial.print(sensorValue);
  Serial.print("\n");
  delay(325);
}

How do I concatenate the "A/D Value: " and integer datatype into one

Serial.println(XXXXXXX);

statement?

Brush me up, plz? It’s been a while. :slight_smile:

The way the serial class is coded, no such method exists. If you look over at the stuff declared in HardwareSerial.h you will see what variations of Serial.print() are available. You may add your own method and recompile the library, but I find it to be pointless. In fact, I find that most of the Serial.print() overloads are pointless, it should be left to the user to implement that functionality if needed.

To save one line of code you could change:

  Serial.print("A/D value: ");
  Serial.print(sensorValue);
  Serial.print("\n");

to

  Serial.print("A/D value: ");
  Serial.println(sensorValue);

Otherwise as for as I know there is no way to concatenate:

print(β€œA/D Value: %i”, sensorValue)

supported currently.

It makes no difference after you compile the code one way or another. If you look at how the Print class is coded, you will see that calling println() calls print() twice, which means when you compile the code it will have the same number of opcodes and binary size will not change. Notice also that \n is just a NEWLINE character, you must also append a carriage return \r if you wish to fall into a new line AND start at the first text column again.

Edit:

Actually, no, it makes the binary size bigger if you do that

your method:

call println(value)

setup function

call print(value)

setup function

print

return

call println()

setup function

call print(β€˜\n’)

setup function

print

return

call print(β€˜\r’)

setup function

print

return

return

His current method

call print(value)

setup function

print

return

call print(β€˜\n’)

setup function

print

return

// stuff that he should have that is missing:

call print(β€˜\r’)

setup function

print

return

You can see which method is far more efficient, if you use objdump and compare the resulting binaries, you will clearly see what I mean. Note that shorter code does not always mean smaller/faster binary.