Arduino-Time関数(時間関数)の使い方
当記事では、ArduinoのTime関数(時間関数)の使い方について詳しく解説します。
Time関数を使うことによって、プログラム実行を指定時間待機したり、プログラム実行からの経過時間を計測することができます。
なお、その他のArduino関数・ライブラリについては、以下の記事をご覧ください。
Time関数(時間関数)
関数 | 引数 | 戻り値 | 説明 |
---|---|---|---|
void delay(unsigned long ms) | ms:待機時間(ms) | なし | プログラムの実行を指定時間待機(ms) |
void delayMicroseconds(unsigned int us) | us:待機時間(us) | なし | プログラムの実行を指定時間待機(us) |
unsigned long millis(void) | なし | プログラム実行からの経過時間(ms)を返す | プログラム実行からの経過時間(ms)を計測 |
unsigned long micros(void) | なし | プログラム実行からの経過時間(us)を返す | プログラム実行からの経過時間(us)を計測 |
delay()/プログラムの実行を指定時間待機(ms)
- 関数:void delay(unsigned long ms)
- 引数:ms⇒待機時間(ms)
- 戻り値:なし
delay()関数は、引数に待機時間(ms:1/1000秒)を指定することで、プログラムの実行を指定時間待機します。
delayMicroseconds()/プログラムの実行を指定時間待機(us)
- 関数:void delayMicroseconds(unsigned int us)
- 引数:us⇒待機時間(us)
- 戻り値:なし
delayMicroseconds()関数は、引数に待機時間(us:1/1000000秒)を指定することで、プログラムの実行を指定時間待機します。
millis()/プログラム実行からの経過時間(ms)を計測
- 関数:unsigned long millis(void)
- 引数:なし
- 戻り値:プログラム実行からの経過時間(ms)を返す
millis()関数は、プログラム実行からの経過時間(ms:1/1000秒)を計測して、戻り値で返します。
micros()/プログラム実行からの経過時間(us)を計測
- 関数:unsigned long micros(void)
- 引数:なし
- 戻り値:プログラム実行からの経過時間(us)を返す
micros()関数は、プログラム実行からの経過時間(us:1/1000000秒)を計測して、戻り値で返します。
サンプルプログラム(サンプルスケッチ)
- Arduino Uno
- USBケーブル
- PC(プログラム書き込み・シリアルモニタ表示)
delay()/プログラムの実行を指定時間待機(ms)
void setup() {
pinMode(13, OUTPUT);//13番ピンを出力に設定
}
void loop() {
digitalWrite(13, HIGH);//13番ピンの出力をHIGH(5V)に設定
delay(1000);//1000msec待機(1秒待機)
digitalWrite(13, LOW);//13番ピンの出力をLOW(0V)に設定
delay(1000);//1000msec待機(1秒待機)
}
サンプルプログラムは、Arduino Unoのボード上のLEDのON/OFFを1000msごとに待機することで、1秒間隔で点滅します。
delayMicroseconds()/プログラムの実行を指定時間待機(us)
void setup() {
pinMode(13, OUTPUT);//13番ピンを出力に設定
}
void loop() {
digitalWrite(13, HIGH);//13番ピンの出力をHIGH(5V)に設定
delayMicroseconds(25000);//25000usec待機(0.025秒待機)
delayMicroseconds(25000);//25000usec待機(0.025秒待機)
delayMicroseconds(25000);//25000usec待機(0.025秒待機)
delayMicroseconds(25000);//25000usec待機(0.025秒待機)、合計0.1秒待機
digitalWrite(13, LOW);//13番ピンの出力をLOW(0V)に設定
delayMicroseconds(25000);//25000usec待機(0.025秒待機)
delayMicroseconds(25000);//25000usec待機(0.025秒待機)
delayMicroseconds(25000);//25000usec待機(0.025秒待機)
delayMicroseconds(25000);//25000usec待機(0.025秒待機)、合計0.1秒待機
}
サンプルプログラムは、Arduino Unoのボード上のLEDのON/OFFを100000usごとに待機することで、0.1秒間隔で点滅します。
millis()/プログラム実行からの経過時間(ms)を計測
void setup() {
Serial.begin(9600);//シリアル通信を9600bpsで初期化
}
void loop() {
unsigned long time;//「time」をunsigned longで変数宣言
delay(1000);//1000msec待機(1秒待機)
time = millis();//プログラム実行からの経過時間(ms)をtimeに返す
Serial.print(time);//経過時間(ms)を送信
Serial.println("ms");//文字列「ms」を送信、改行
}
999ms
1999ms
3000ms
3999ms
5000ms
6000ms
7001ms
8001ms
9000ms
10001ms
サンプルプログラムは、1秒間プログラムを待機した後、経過時間を計測してシリアルモニタに表示させることを繰り返します。
シリアルモニタに表示される数値は、delay(1000)に加えて他のプログラム実行時間も加わるので、正確に1000msごとに加算されていきません。
micros()/プログラム実行からの経過時間(us)を計測
void setup() {
Serial.begin(9600);//シリアル通信を9600bpsで初期化
}
void loop() {
unsigned long time;//「time」をunsigned longで変数宣言
delay(1000);//1000msec待機(1秒待機)
time = micros();//プログラム実行からの経過時間(us)をtimeに返す
Serial.print(time);//経過時間(us)を送信
Serial.println("us");//文字列「us」を送信、改行
}
1000012us
2000372us
3000732us
4001092us
5001456us
6001816us
7002180us
8002540us
9002908us
10003276us
サンプルプログラムは、1秒間プログラムを待機した後、経過時間を計測してシリアルモニタに表示させることを繰り返します。
シリアルモニタに表示される数値は、delay(1000)に加えて他のプログラム実行時間も加わるので、正確に1000000usごとに加算されていきません。
おすすめのArduinoボードはどれ?
当記事『Arduino-Time関数(時間関数)の使い方』では、Arduino Unoを使用したサンプルプログラムを解説してきました。
やはり、たくさんの種類のあるArduinoボードの中でも、最も基本的なエディションのArduino Unoがおすすめなのですが、Arduino Unoと電子部品を組み合わせたキットも存在します。
電子工作初心者にとっては、いちいち電子部品を別途購入する必要がないので非常に有用です。以下の記事で初心者でもわかりやすいように、ランキング形式でおすすめのArduino Unoを紹介しているので、ぜひご覧ください。
また、以下の記事で、安価でWi-Fi/Bluetoothに対応している「ESP32開発ボード」についてもまとめてみました。
このボードは、Arduinoボードではありませんが、Arduino IDEでソフト開発ができるため、電子工作でIoTを実現したい方におすすめです。