我正在构建一个测量组件电压的程序(光开关)。当电位低于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);
}
答案 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;
}
}