millis()
Description
Returns the number of milliseconds passed since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.
Syntax
Use the following function to get the exact time the board has been running the current program in milliseconds:
millis()
Parameters
This function does not admit parameters.
Returns
This function returns the number of milliseconds passed since the program started. Data type:
unsigned long
.Example Code
This example code prints on the serial port the number of milliseconds passed since the Arduino board started running the code itself.
1unsigned long myTime;2
3void setup() {4 Serial.begin(9600);5}6void loop() {7 Serial.print("Time: ");8 myTime = millis();9
10 Serial.println(myTime); // prints time since program started11 delay(1000); // wait a second so as not to send massive amounts of data12}
Notes and Warnings
The return value for
is of typemillis()
; logic errors may occur if a programmer tries to do arithmetic with smaller data types such asunsigned long
. Even signedint
may encounter errors as its maximum value is half that of its unsigned counterpart.long
is incremented (for 16 MHz AVR chips and some others) every 1.024 milliseconds, then incremented by 2 (rather than 1) every 41 or 42 ticks, to pull it back into sync; thus, somemillis()
values are skipped. For accurate timing over short intervals, consider usingmillis()
.micros()
will wrap around to 0 after about 50 days (micros in about 70 minutes).millis()
Reconfiguration of the microcontroller’s timers may result in inaccurate
readings.millis()
See also
Suggest changes
The content on docs.arduino.cc is facilitated through a public GitHub repository. If you see anything wrong, you can edit this page here.
License
The Arduino documentation is licensed under the Creative Commons Attribution-Share Alike 4.0 license.