Arduinoのサンプルプログラム

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)

delay()/プログラムの実行を指定時間待機(ms)
  • 関数:void delay(unsigned long ms)
  • 引数:ms⇒待機時間(ms)
  • 戻り値:なし

delay()関数は、引数に待機時間(ms:1/1000秒)を指定することで、プログラムの実行を指定時間待機します。

delayMicroseconds()/プログラムの実行を指定時間待機(us)

delayMicroseconds()/プログラムの実行を指定時間待機(us)
  • 関数:void delayMicroseconds(unsigned int us)
  • 引数:us⇒待機時間(us)
  • 戻り値:なし

delayMicroseconds()関数は、引数に待機時間(us:1/1000000秒)を指定することで、プログラムの実行を指定時間待機します。

millis()/プログラム実行からの経過時間(ms)を計測

millis()/プログラム実行からの経過時間(ms)を計測
  • 関数:unsigned long millis(void)
  • 引数:なし
  • 戻り値:プログラム実行からの経過時間(ms)を返す

millis()関数は、プログラム実行からの経過時間(ms:1/1000秒)を計測して、戻り値で返します。

micros()/プログラム実行からの経過時間(us)を計測

micros()/プログラム実行からの経過時間(us)を計測
  • 関数:unsigned long micros(void)
  • 引数:なし
  • 戻り値:プログラム実行からの経過時間(us)を返す

micros()関数は、プログラム実行からの経過時間(us:1/1000000秒)を計測して、戻り値で返します。

サンプルプログラム(サンプルスケッチ)

用意するもの
  1. Arduino Uno
  2. USBケーブル
  3. 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」を送信、改行
}

サンプルプログラムは、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」を送信、改行
}

サンプルプログラムは、1秒間プログラムを待機した後、経過時間を計測してシリアルモニタに表示させることを繰り返します。

シリアルモニタに表示される数値は、delay(1000)に加えて他のプログラム実行時間も加わるので、正確に1000000usごとに加算されていきません。

テキストのコピーはできません。