mills()替代delay()的實驗

 mills()替代delay()的實驗

記得在網路上看到一些教學,提到delay()的狀態下會停止部件的
運作,這樣會暫停包含在整個及函式裡的程式碼。

mills()函式返回型別為 unsigned long 的無符號變數
以下是呼叫mills()印出來的數值

unsigned long currenTime;
void setup(){
    Serial.begin(115200);
}

void loop(){
    currenTime=millis();
    Serial.println(currenTime);
    delay(1000);
}
-----------------------------------------------------------------------
--- More details at http://bit.ly/pio-monitor-filters
--- Miniterm on COM10  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
7033
8033
9033
10033
11033
12033
13033
14033
15033
16033
17033
18033
19033
20033
可以看到它以1000毫秒一直往上增加,所以這可以紀錄經過的時間
和取得當下的經過的時間。
我自己理解的寫法公式
如果(新的時間舊的時間 >= 暫停週期的時間)
        舊的時間=新的時間

我以控制LED為練習
上傳之後,LED會一秒閃爍一次,和delay()有一樣的作用
const int led=18;
int ledSatus=LOW;

unsigned long oldTime=millis();
void setup(){
    Serial.begin(115200);
    pinMode(ledOUTPUT);
    ledSatus=LOW;
}

void loop(){
    unsigned long newTime=millis();
    if (newTime-oldTime>=1000){
        oldTime=newTime;
        if (ledSatus==LOW){
            ledSatus=HIGH;
        }else{
            ledSatus=LOW;
        }
        digitalWrite(ledledSatus);
    }
}



















留言

這個網誌中的熱門文章