millis()

Last revision:2025/06/06

名称

millis()

説明

Arduinoボードが現在のプログラムを起動してから経過した時間をミリ秒単位で返却する。この値は、約50日後にオーバーフロー(ゼロに戻る)する。

書式

現在のプログラムを開始してからボードが起動している時間をミリ秒単位で取得するには、以下の関数を使う。

millis()

C言語シグネチャ(avr)

unsigned long millis();

引数

なし。

戻り値

Arduinoボードが現在のプログラムを開始してからのミリ秒。データ型: unsigned int

コード例

以下のコードは、Arduinoボードが現在のプログラムを開始してからのミリ秒を返す。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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
}

注意

  • millis()の返却値はunsigned longである。例えばintなどの小さいデータ型と計算しようとすると論理エラーになるかもしれない。符号付longも、unsigned longの半分の数値を格納できるだけなので、エラーになるかもしれない。
  • (16MHzのAVRチップやいくつかのチップでは)millis()は、1024マイクロ秒ごとにインクリメントされ、41ティック、あるいは、42ティックごとに2(1ではなく)インクリメントして同期をとる。このように、いくつかのmillis()の値はスキップされる。短時間の正確なタイミングが必要な場合は、micros()の利用を検討すること。
  • millis()は、約49日後(micros()は、約71分)で、0に戻る。
  • マイクロコントローラのタイマーを再構成すると、millis()の値が不正確になるかもしれない。Arduino AVRボードとArduino megaAVRボードのコアは、millis()の生成にTimer0を使う。Arduino ARM(32-bits)ボードはとArduino SAMD(32-bits ARM Cortex-M0+)ボードはSysTickタイマーを使う。

参照

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/time/millis/

実装の解析

millis()

最終更新日

August 16, 2026

inserted by FC2 system