Arduinoのサンプルプログラム

Arduino-Time関数(時間関数)の使い方

当記事では、ArduinoのTime関数(時間関数)の使い方について詳しく解説します。

Time関数を使うことによって、プログラム実行を指定時間待機したり、プログラム実行からの経過時間を計測することができます。

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秒待機)
}

delay()でプログラムの実行をms単位(1/1000秒)で時間を指定して待機します。サンプルプログラムは、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秒待機
}

delayMicroseconds()でプログラムの実行をus単位(1/1000000秒)で時間を指定して待機します。サンプルプログラムは、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」を送信、改行
}

millis()は、プログラム実行からの経過時間をms単位(1/1000秒)で計測します。サンプルプログラムは、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」を送信、改行
}

micros()は、プログラム実行からの経過時間をus単位(1/1000000秒)で計測します。サンプルプログラムは、1秒間プログラムを待機した後、経過時間を計測してシリアルモニタに表示させることを繰り返します。

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

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