Arduino mills() 函式
Ammar Ali
2023年10月12日
本教程將討論 millis()
函式在 Arduino 中不同應用程式中的使用。本教程還將討論一些例子來更好地理解 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。考慮到你必須使 LED 閃爍特定的時間,例如 1 秒鐘。在這種情況下,你可以使用 millis()
函式使 LED 閃爍特定時間。如果你使用 delay()
函式使 LED 閃爍,它還將暫停你的程式碼,直到延遲時間結束。因此,可以使用 millis()
函式來代替使用 delay()
函式,並且該函式不會暫停你的程式碼。
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 將精確地開啟和關閉一秒鐘。你可以通過更改上面程式碼中可變週期的值來更改閃爍週期。
使用 millis()
函式更改 Arduino 中 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