delay

説明

指定したミリ秒プログラムの動作を止めます。

書き方 delay(ミリ秒)  1000は1秒です
戻り値 なし
引数 (unsigned long)ミリ秒 … 32767より大きい整数を指定するときは、値の後ろにULを付け加えます。例 delay(60000UL)

プログラム例

注意

delayはプログラムの動き(CPUの動き)を完全に指定した時間止めてしまいます。
上記のプログラム例のように1秒おきに点滅するLEDのプログラムを作った場合、このプログラムは確かにその通りの動きをしますが、残念ながら、1秒間止まっている間、すべての動作が止まってしまいます。

これは、例えばクムクムロボットでいうと、顔を左端から右端に回転させながらLEDを点滅させるプログラムを組みたいと思ったとき、顔の動きは1秒ごとにしか動かないため、カウカクとLEDの点滅と連動をした動きしかできなロボットが出来上がってしまいます。

そんな時はArduinoではmillis()を使うように推奨しています。

delayは割り込みを妨げない実験

delay関数は割り込みを妨げないと記述されているため、タイマー割り込みのライブラリーと合わせて実験をしてみました。

下記は13番に接続されたLED(ほとんどのArduinoのボードに標準で搭載済み)をタイマー割り込みで50msec単位で点滅させておき、loopでは1秒おきに赤いLEDを点滅させるプログラムです。

もし、delayがタイマー割り込みん邪魔をするのであれば、13番のLEDの点滅周期は不定期になるはずですが、決してそんなことはありません。


タイトルとURLをコピーしました