写在前面
学习任何一门编程语言,第一课就是 helloworld!
学习任何一款开发板,第一课,必定就是点灯!
但是,同样是点灯,也有不同的方法。
1、delay()函数
int ledPin = D7; // 定义LED灯引脚
void setup(){
pinMode(ledPin, OUTPUT); //设置引脚工作模式
}
void loop(){
digitalWrite(ledPin, HIGH); //灯亮
delay(1000);
digitalWrite(ledPin, LOW); //灯灭
delay(1000);
}
这是一个最简单的点灯示例程序。运行程序,会看见闪烁,间隔时间1秒。
但是,在实际项目中,这种方法并不合适。
因为,在 delay() 的时候,程序是 阻塞 的。
2、millis()函数
int led_Red = D10; //定义红灯引脚
int ledState=LOW; //定义红灯初始状态
unsigned long previousTime = 0; //先前时间
long interval = 50; //间隔时间
void setup(){
pinMode(led_Red, OUTPUT); // 设置红灯引脚为输出模式
Serial.begin(9600); //初始化串口,设置波特率为9600
}
void loop(){
unsigned long currentTime=millis(); //获取当前时间
if(currentTime - previousTime > interval)
{
if (ledState == LOW) //交替
ledState = HIGH;
else
ledState = LOW;
digitalWrite(led_Red, ledState); // 闪烁
previousTime = currentTime; //更新时间
}
Serial.println(currentTime); // 打印时间
}
再看这个示例,功能都是实现灯的闪烁,但是这种方法就解决了程序阻塞的问题。
在运行时,会发现,灯在闪烁,串口在不停地打印时间信息。