如何使用Arduino测量超过10秒的电压?

时间:2015-12-02 18:18:05

标签: c time arduino

我正在构建一个测量组件电压的程序(光开关)。当电位低于5 V时,指示灯将亮起。

但我的问题是,如果电压低于5 V 10秒或更长时间,我希望Arduino打开灯泡。例如,如果电压电平低于5 V持续8秒,然后再次变为超过5 V,则灯不应亮起。

到目前为止,这是我的代码:

int Pin = 2;
const float baselineVoltage = 5.0;

void setup() {
    Serial.begin(9600);
    pinMode(Pin,OUTPUT);
}

void loop() {
    int sensorValue = analogRead(A0);
    float voltage = sensorValue * (5.0 / 1023.0);
    Serial.println(voltage);
    if(voltage < baselineVoltage){
        digitalWrite(2,HIGH);
   }
delay(10);
}

1 个答案:

答案 0 :(得分:1)

我相信这样的事情会解决你的10秒延迟问题。如果你想要相同的10秒延迟关闭它,你需要做类似的事情。

int Pin = 2;
const float baselineVoltage = 5.0;
int belowBaselineVoltage = false;
unsigned long turnOnAt;
const unsigned long turnOnDelay = 10 * 1000;

void setup() {
    Serial.begin(9600);
    pinMode(Pin, OUTPUT);
}

void loop() {
    int sensorValue = analogRead(A0);
    float voltage = sensorValue * (5.0 / 1023.0);
    Serial.println(voltage);

    if (voltage < baselineVoltage)
    {
        if (belowBaselineVoltage == true)
        {
            if (millis() >= turnOnAt)
            {
                digitalWrite(2, HIGH);
            }
        }
        else
        {
            belowBaselineVoltage = true;
            turnOnAt = millis() + turnOnDelay;
        }
    }
    else
    {
        belowBaselineVoltage = false;
    }
}