delay()

Last revision:2025/06/06

名称

delay()

説明

パラメータで指定した時間(ミリ秒単位)だけプログラムを一時停止する。

書式

コード内で、指定した時間の停止を開始するには、以下の関数を使う。

delay(ms)

C言語シグネチャ(avr)

void delay(unsigned long ms);

引数

この関数は以下の引数を受け付ける。

ms一時停止する時間(ミリ秒単位)。データ型: unsigned long

戻り値

なし。

コード例

このコードは出力ピンを反転させる前に1秒待つ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int ledPin = 13;              // LED connected to digital pin 13

void setup() {
  pinMode(ledPin, OUTPUT);    // sets the digital pin as output
}

void loop() {
  digitalWrite(ledPin, HIGH); // sets the LED on
  delay(1000);                // waits for a second (1000 ms)
  digitalWrite(ledPin, LOW);  // sets the LED off
  delay(1000);                // waits for a second (1000 ms)
}

注意

delay()関数を使ってLEDを点滅させることは簡単だし、多くのスケッチではスイッチのチャタリングを防止するために少しの遅延を利用しているが、スケッチ でdelay()を利用することには重大な欠点がある。delay()関数を使っている間は、センサーから値を読み取ったり、計算をしたり、ピンの制御を行うことができない。その結果、ほとんどの動作を止めてしまう。

タイミングを制御する別の方法を知りたいときには、millis()関数や参考のスケッチを参考にしてほしい。精通したプログラマは、スケッチが非常に単純であるとき以外は、10ミリ秒以上の時刻イベントを扱うときにはdelay()関数を利用しない。

delay()関数は割り込みを禁止しないので、delay()の実行中も、Atmegaチップの制御を行うための処理は実行される。RXピンを使ったシリアル通信は記録さ れ、PWM(analogWrite())波とピンの状態は保持され、割り込みは意図したとおりに動作する。

参照

オリジナルのページ

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

実装の解析

delay()

最終更新日

August 16, 2026

inserted by FC2 system