Работа с аналоговыми входами и значениями с них
- Войдите на сайт для отправки комментариев
Доброго всем времени суток, имею до вас следующий вопрос:
if (analog2 < activaciya - 20 || analog2 > activaciya + 20 ) { unsigned long currentMillis1 = millis(); if (currentMillis1 - previousMillis1 > 1000) { previousMillis1 = currentMillis1; n = n + 1; if ( n == 3 && deactivaciya > analog2 - 20 && deactivaciya < analog2 + 2 ) { p = 7; } else { p = 6; } } }
Это кусок кода, весь код приводить не буду т.к он дюже большой. Суть вот в чем, до функции void setup() я объявил переменные deactivaciya и activaciya, n, аналог2 и previousMillis1. В фунции void setup() я так же прописал
pinMode(analogInPin2, INPUT_PULLUP);
activaciya = analogRead(analogInPin2);
По моему разумению приравнивание активации к значению аналог пин 2 в сетап позволит запомнить сосотояние аналогового входа на начало, А так как сетап выполняется 1 раз, то больше активация не изменится. Деактивация так же приравнивается в ручную в другой строке.
Код должен был работать так: при изменении значения аналог2 (он считывается в лууп постоянно) оно сравнивается со своим начальным значением, если оно отличается от него более чем на 20 едениц, то происходит отсчет 3 секунд, после чего значение аналог2 сравнивается с дективацией в некотором интервале и если оно от него отличается то р = 7, если же нет, то р=6, но у меня почему-то р всегда равно 6((
Разобрался, проблема была с else