我正在构建一个测量组件(光电开关)电压的程序。当电位低于5V时,灯就会亮。
但我的问题是,如果电压低于 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);
}
最佳答案
我相信这样的方法可以解决您的 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;
}
}
关于c - 如何使用Arduino测量10秒内的电压?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050119/