Значения находятся в интервале в течение заданного времени.

cymaticsmind
Offline
Зарегистрирован: 15.05.2017

Здравствуйте, как сделать условие, чтобы действие выполнялось, только если значения с датчика находятся в определенном интервале в течение заданного времени. У меня весы подключены к ардуино и LCD экран.

Нужно чтобы когда поставиться определенный вес, то что-то должно выполнится, только если этот вес (точнее интервал, так как значения веса с датчиков постоянно колеблется) находится на весах некоторое время.

А также это нужно чтобы предотвратить установку веса руками. 

Сейчас это сделано так, что значение считывается, проверяется условие, если оно находится в интервале, потом через delay значение считывается еще раз и проверяется опять. Но тогда на экране на время delay зависает какое-то значение, а нужно чтобы постоянно там отображался вес на весах. 

inspiritus
Offline
Зарегистрирован: 17.12.2012

для начала сделайте стопятьсот коротких делаев циклом for и перед каждым отображайте новое значение.

захочется большего изучите как делать задержку без delay через millis

b707
Offline
Зарегистрирован: 26.05.2017

cymaticsmind пишет:

Здравствуйте, как сделать условие, чтобы действие выполнялось, только если значения с датчика находятся в определенном интервале в течение заданного времени. У меня весы подключены к ардуино и LCD экран.

У меня тоже проект с весами - логика простая. В "спящем" режиме вес контролируется, скажем, раз в 5 минут. Если при очередном взвешивании вес попал в нужный интервал - начинаем считывать его чаще, например раз в минуту. Считываем нужное время (частоту считывания лучше выбрать так, чтобы в "заданное время" попало не 1-2, а 5-10 замеров). Если любое из этих значений будет вне интервала - выходим из цикла проверки веса и снова возвращаемся в спящий режим.

 Delay() выкиньте совсем. Прочитайте чуть выше прикрепленные темы про "блинк без делай"