Description

Looks for the next valid integer in the incoming serial. The function terminates if it times out (see Serial.setTimeout()).

Serial.parseInt() inherits from the Stream utility class.

In particular:

  • Parsing stops when no characters have been read for a configurable time-out value, or a non-digit is read;
  • If no valid digits were read when the time-out (see Serial.setTimeout()) occurs, 0 is returned;

Syntax

Use one of the following function variants to search for an integer number on the serial buffer:

  • Serial.parseInt()
  • Serial.parseInt(lookahead)
  • Serial.parseInt(lookahead, ignore)

Parameters

The function admits the following objects and parameters:

Serial: serial port object. See the list of available serial ports for each board on the Serial main page.

lookahead: the mode used to look ahead in the stream for an integer. Allowed data types: LookaheadMode. Allowed lookahead values:

  • SKIP_ALL: all characters other than digits or a minus sign are ignored when scanning the stream for an integer. This is the default mode.
  • SKIP_NONE: Nothing is skipped, and the stream is not touched unless the first waiting character is valid.
  • SKIP_WHITESPACE: Only tabs, spaces, line feeds, and carriage returns are skipped.

ignore: used to skip the indicated char in the search. Used for example to skip thousands divider. Allowed data types: char

Returns

The function returns the first integer number found. Data type: long.

Example Code

The following code extracts the first valid integer number received on the serial:

void setup() {
  Serial.begin(9600);
  while (!Serial)
    ;

  Serial.println("Enter a integer number:");  // try with a mixed phrase e.g. "The size of the box is 5 mm"
}

void loop() {
  if (Serial.available()) {
    int number = Serial.parseInt();
    if (number != 0) {
      Serial.print("You entered: ");
      Serial.println(number);
    }
  }
}

See also