Работа с аналоговыми входами и значениями с них

Lictor
Offline
Зарегистрирован: 01.10.2015

Доброго всем времени суток, имею до вас следующий вопрос:

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((

Lictor
Offline
Зарегистрирован: 01.10.2015

Разобрался, проблема была с else