Example Code
This example code prints on the serial port the number of milliseconds passed since the Arduino board started running the code itself.
unsigned long myTime;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Time: ");
myTime = millis();
Serial.println(myTime); // prints time since program started
delay(1000); // wait a second so as not to send massive amounts of data
}
Notes and Warnings
Please note that the return value for millis() is of type unsigned long
, logic errors may occur if a programmer tries to do arithmetic with smaller data types such as int
. Even signed long
may encounter errors as its maximum value is half that of its unsigned counterpart.
Reconfiguration of the microcontroller’s timers may result in inaccurate millis()
readings. The "Arduino AVR Boards" and "Arduino megaAVR Boards" cores use Timer0 to generate millis()
. The "Arduino ARM (32-bits) Boards" and "Arduino SAMD (32-bits ARM Cortex-M0+) Boards" cores use the SysTick timer.