Отслеживание изменения входного напряжения на Arduino
- Войдите на сайт для отправки комментариев
Добрый день. Нужна ваша помощь в изменении кода программы. Я написал простую программу, которая отслеживает уровень напряжения на одном из аналоговых входов Ардуино, и в зависимоти от величины входного напряжения управляет выходами. Код вполне работоспособный, но мне его нужно изменить. Нужно сделать так, чтобы Ардуино НЕ реагировало на короткие скачки входного напряжения. То есть, чтобы на выходах появлялся высокий уровень только в тот момент, если напряжение увеличилось или уменьшилось на время более, чем 2 секунды. То есть, не реагировать на короткие скачки напряжения, которые длятся менее 2-х секунд. Помогите, пожалуйста, написать код. Delay использовать не вариант, а с Millis я не могу пока разобраться. Пытался понять, как оно работает, но пока до меня это не доходит. Всем заранее спасибо!
int res = 7; int sp = 2; int FLValue = 0; void setup() { pinMode(res, OUTPUT); pinMode(sp, OUTPUT); } void loop() { FLValue = analogRead(A0); if (FLValue > 300){ digitalWrite(sp, HIGH); }else if (FLValue < 300){ digitalWrite(sp, LOW); } if (FLValue < 250){ digitalWrite(res, HIGH); }else if (FLValue > 250){ digitalWrite(res, LOW); } }
Считайте скользящее среднее с периодом в две секунды, будете полчать сглаженную кривую напряжения с приблизительно двухсекундной задержкой.
У нас импульс 5 Вольт 1.9 секунды. Алгоритм срабатывать на такой сигнал не должен. Скользящее среднее покажет 4.75. Сработает?
Нужно засекать момент превышения заданного уровня. Если по истечение 2 секунд уровень остается выше границы, нужно реагировать.