led-without-delay
上個筆記可以點亮led了殊轴,不過delay的時候是很浪費時間的揍瑟,這里可以采用另外一個方法實現(xiàn)蟆盹,所以要用到一個新的函數(shù)mills():
這個函數(shù)可以返回從程序開始到現(xiàn)在的時間阐滩,單位是毫秒級坪稽,大約達到50天的時候會溢出(重置為0),具體參見函數(shù)介紹扛伍。
連線圖和上一個筆記里一樣筷畦,就不貼了,點這里
代碼:
const int ledPin = 13;
int ledState = LOW;
long previousMillis = 0; ?//記錄上一次led狀態(tài)變化的時間
long interval = 1000; //led變化頻率刺洒,毫秒級鳖宾,這里還是1秒
void setup(){
pinMode(ledPin, OUTPUT);
}
void loop(){
unsigned long currentMillis = millis();
? if(currentMillis - previousMillis > interval){
? ? previousMillis = currentMillis;
? ? if(ledState == LOW)
? ? ? ledState = HIGH;
? ? else
? ? ? ledState = LOW;
? ? digitalWrite(ledPin, ledState);
? }
}
代碼結構很簡單,效果和用delay是一樣的逆航,但是在loop里面可以做其他的事情了鼎文,提高了效率。