0
我正在製作一個必須用LDR感應環境光的項目。這個想法是,當LDR的值低3秒時,LED導通。此外,當LDR的值再次升高並保持3秒高時,LED應該轉向。這樣我就可以避免只是一個雲或者有人在傳感器上揮舞着,立即開啓LED。如何在讀取傳感器時添加時間延遲 - arduino
我知道我可以在這裏使用mills()函數,就像在沒有延遲的教程中一樣。但它似乎沒有工作....
這是我到目前爲止的代碼:
#define ledPin 2
#define ldrPin A0
int daylight = 430;
int night = 150;
int ledState = 0;
int lightState = 0;
const long timeOut = 2000;
unsigned long previousMillis = 0;
unsigned long previousMillis2 = 0;
unsigned long tNow = 0;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT);
pinMode(ldrPin, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
tNow = millis();
int value = analogRead(ldrPin);
switch (lightState) {
case 0:
ledState = 0;
if (value <= 200 && (tNow - previousMillis) >= timeOut)
{
previousMillis = tNow;
lightState = 1;
}
break;
case 1:
ledState = 1;
if (value >= 300 && (tNow - previousMillis2) >= timeOut)
{
previousMillis2 = tNow;
lightState = 0;
}
break;
}
switch (ledState) {
case 0:
digitalWrite(ledPin, LOW);
break;
case 1:
digitalWrite(ledPin, HIGH);
break;
}
Serial.println(value);
Serial.println(ledState);
}