|
试验了几天,终于写成了一个简易的代码
/* Blink without Delay
不使用delay函数来使一个连接在数字口的LED闪烁,这意味着别的代码可以同时执行,而不会被LED的代码打断。
*/
const int DianJi1 = 2;
int DJ1State = LOW; // 设置 LED状态
const int DianJi2 = 4;
int DJ2State = LOW; // 设置 LED状态
long previousMillis = 0; // 存储上一次LED状态改变的时间
// 下面的变量是长整形,因为以毫秒为单位测量的时间会快速地变成一个更大的,整形无法存储的数字。
long interval =300 ; // 设置间隔时间为1000毫秒
void setup() {
// 设置数字口输出
pinMode(DianJi1, OUTPUT);
pinMode(DianJi2, OUTPUT);
}
void loop()
{
// 检查是否到了亮灭灯的时间,也就是,如果现在和上一次亮灭灯的时间差比你设置的间隔时间大
unsigned long currentMillis = micros();
if(currentMillis - previousMillis > interval) {
// 保存最后一次亮灯的时间
previousMillis = currentMillis;
// 如果LED灭了就点亮它 ,反之亦然:
if (DJ1State == LOW) DJ1State = HIGH;
else DJ1State = LOW;
if (DJ2State == LOW) DJ2State = HIGH;
else DJ2State = LOW;
// 设置变量DJ1State为LED数字输入:
digitalWrite(DianJi1, DJ1State);
digitalWrite(DianJi2, DJ2State);
}
} |
|