Не понятна часть кода

lee
Offline
Зарегистрирован: 13.03.2014
void loop()  
{
  currentTime = millis();
  if(currentTime >= (loopTime + 5))     // проверяем каждые 5мс (200 Гц)
  { 
    encoder_A = digitalRead(pin_A);     // считываем состояние выхода А энкодера 
    encoder_B = digitalRead(pin_B);     // считываем состояние выхода B энкодера    
    if((!encoder_A) && (encoder_A_prev))  // если состояние изменилось с положительного к нулю
    { 
      if(encoder_B) 
      {
        if(brightness + fadeAmount <= 255) brightness += fadeAmount;  // выход В в HIGH сост., значит вращение по часовой стрелке, увеличиваем значение, не более чем до 255             
      }   
      else 
      {
        if(brightness - fadeAmount >= 0) brightness -= fadeAmount;    // выход В в LOW сост., значит вращение против часовой стрелки, уменьшаем значение, но не ниже 0           
      }   
    }   
    encoder_A_prev = encoder_A;     // сохраняем значение А для следующего цикла 
    loopTime = currentTime;
  }

Приветствую. Помогите интерпретировать 8 строку. Вроде переменные в условии ни с чем не сравниваются.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
if((!encoder_A) && (encoder_A_prev))

тоже самое что и 

if((encoder_A==0) && (encoder_A_prev==1))

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Условие для ИФа ( то что в скобках) - истина или ложь. ДА или НЕТ . Это логическое выражение. Это не числа.

И если  переменная равна "0" - то её логическое выражение- FALSE. Во всех остальных случаях оно TRUE. Даже -100

lee
Offline
Зарегистрирован: 13.03.2014

Спасибо.