Arduino millis()関数

Ammar Ali 2023年10月12日
  1. Arduino で millis() 関数を使って時間の経過を確認する
  2. Arduino で millis() 関数を使用して LED を点滅させる
  3. Arduino で millis() 関数を使って LED の明るさを変える
Arduino millis()関数

このチュートリアルでは、Arduino のさまざまなアプリケーションでの millis() 関数の使用について説明します。このチュートリアルでは、millis() 関数をよりよく理解するためのいくつかの例についても説明します。

Arduino で millis() 関数を使って時間の経過を確認する

millis() 関数は、タイプ unsigned long の符号なし変数を返します。これには、Arduino ボードがコードの実行を開始してから経過したミリ秒数が含まれます。返される変数のタイプは unsigned long であるため、49 日後に数値がオーバーフローし、ゼロにリセットされます。

unsigned long currentTime;

void setup() { Serial.begin(19200); }

void loop() {
  Serial.print("Time Stamp: ");
  currentTime = millis();
  Serial.println(currentTime);
  delay(1000);
}

上記のコードでは、currentTime は時間を格納するためのタイプ unsigned long の変数です。millis() 関数の詳細については、このリンクを確認してください。

Arduino で millis() 関数を使用して LED を点滅させる

この例では、millis() 関数を使用して LED を点滅させます。1 秒などの特定の期間 LED を点滅させる必要があると考えてください。この場合、millis() 関数を使用して、特定の時間 LED を点滅させることができます。delay() 関数を使用して LED を点滅させると、遅延時間が終了するまでコードが一時停止します。したがって、delay() 関数を使用する代わりに、millis() 関数を使用できます。コードが一時停止することはありません。

unsigned long startTime;
unsigned long currentTime;
const unsigned long period = 1000;
const byte ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
  startTime = millis();  // initial start time
}

void loop() {
  currentTime = millis();
  if (currentTime - startTime >= period)  // test whether the period has elapsed
  {
    digitalWrite(ledPin,
                 !digitalRead(ledPin));  // if so, change the state of the LED.
    startTime = currentTime;
  }
}

この例では、LED は正確に 1 秒間オンとオフになります。上記のコードの可変周期の値を変更することにより、点滅周期を変更できます。

Arduino で millis() 関数を使って LED の明るさを変える

この例では、millis() 関数を使用して LED の明るさを変更します。LED の輝度が上がるまでの時間を設定します。この目的のために、LED を Arduino の PWM ピンに接続する必要があります。analogWrite() 関数を使用して、LED に明るさを書き込むことができます。analogWrite 関数を使用して、0 から 255 の範囲で LED の明るさを変更できます。

unsigned long startTime;
unsigned long currentTime;
const unsigned long period = 10;
const byte ledPin = 10;  // using an LED on a PWM pin.
byte LedBrightness = 0;  // initial brightness
byte LedIncrement = 1;   // amount to change the brightness

void setup() {
  pinMode(ledPin, OUTPUT);
  startTime = millis();  // initial start time
}

void loop() {
  currentTime = millis();
  if (currentTime - startTime >= period) {
    analogWrite(ledPin, LedBrightness);  // set the brightness
    LedBrightness += LedIncrement;
    startTime = currentTime;
  }
}

この例では、LED の明るさは 10 ミリ秒ごとに増加します。上記のコードで可変期間を変更することにより、増分時間を変更できます。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - Arduino Function