необходимо с помощью Arduino определять наличие 220В в сети.
вот кусок схемы, с помощью которого это выполняется:
в качестве оптопар используются mid400:
выходы AC_TEST и AC_TEST2 подключаются к цифровым выходам ардуино.
пины я настраиваю как
Код: Выделить всё
pinMode(acTestPin1, INPUT_PULLUP);
pinMode(acTestPin2, INPUT_PULLUP);определяю я следующим образом:
Код: Выделить всё
int acTestValue1 = 1;
int acTestValue2 = 1;
unsigned long startMeasuring = millis();
do {
if (acTestValue1 && !digitalRead(acTestPin1)) {
acTestValue1 = 0;
}
if (acTestValue2 && !digitalRead(acTestPin2)) {
acTestValue2 = 0;
}
} while ((acTestValue1 && acTestValue2) && ((millis() - startMeasuring) < 20));
return acTestValue1 && acTestValue2;20 - это 20мс, т.е. за этот интервал времени, если напряжение есть, оно точно будет замечено.
но у меня уровень не сбрасывается. всегда возвращаются единички. пробовал увеличивать временной интервал измерений, но это не помогает.
подскажите, в чем я тут ошибаюсь)) почему не работает.