led-without-delay
上个笔记可以点亮led了,不过delay的时候是很浪费时间的,这里可以采用另外一个方法实现,所以要用到一个新的函数mills():
这个函数可以返回从程序开始到现在的时间,单位是毫秒级,大约达到50天的时候会溢出(重置为0),具体参见函数介绍。
连线图和上一个笔记里一样,就不贴了,点这里
代码:
const int ledPin = 13;
int ledState = LOW;
long previousMillis = 0; //记录上一次led状态变化的时间
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里面可以做其他的事情了,提高了效率。