if

Тема в разделе "Микроконтроллеры AVR", создана пользователем Беженарь Миша, 23 авг 2015.

  1. Можно ли в функции if использовать данные с двух датчиков. К примеру
    if ( val == HIGH, val1 >100 )
    {
    digitalWrite(ledPin, HIGH);
    }
     
  2. Unixon

    Unixon Оракул Модератор

    Код (Text):

    if (val && (val1>100))
    {
     digitalWrite(ledPin, HIGH);
    }
     
     
    Беженарь Миша нравится это.
  3. А почему HIGH убрали а val1 в скобках?
     
  4. Unixon

    Unixon Оракул Модератор

    1) достаточно, чтобы выполнялось условие val!=0, не обязательно использовать полное выражение.
    2) даже если приоритет операторов позволяет опустить скобки, лучше ставить их для визуальной группировки условий.
     
    Беженарь Миша нравится это.
  5. Спасибо вам большое.:)
     
  6. А мой вариант не рабочий?
    И если не правельный то как написать
    if ( val == LOW, val1 >100 )
    {
    digitalWrite(ledPin, HIGH);
    }
     
  7. Unixon

    Unixon Оракул Модератор

    Код (Text):
    if ((val==HIGH) && (val1>100))
    {
      digitalWrite(ledPin, HIGH);
    }
     
    Беженарь Миша нравится это.
  8. Вы действительно очень мне помогли!
     
  9. geher

    geher Гуру

    Это забавно, но данный вариант абсолютно корректен с точки зрения синтаксиса языка C++, но работать будет несколько иначе, чем правильно написанное логическое выражение.
    Значение, возвращаемое конструкцией
    выражение1, выражение2
    равно значению последнего выражения из перечисленных через символ ','.
    В результате поведение оператора if в данном конкретном случае будет определяться только вторым условием т.е. val1 >100.
    Скорее всего при оптимизации первое из условий (val == LOW) будет вообще убрано компилятором как ничего не изменяющая конструкция, результат которой нигде не используется.
     
    Беженарь Миша нравится это.
  10. Cпасибо что объяснили.
     
  11. А вот в одном if можно использовать показания с неограниченного количества датчиков?
     
  12. vvr

    vvr Инженерище

    только правильно условия пропиши:)
     
    Беженарь Миша нравится это.
  13. а вот кол-во показаний никак не влияют на работу
     
  14. vvr

    vvr Инженерище

    я про ограничения по количеству условий не читал.
    сам использовал до трёх - всё ок
     
    Беженарь Миша нравится это.
  15. vvr

    vvr Инженерище

    как то так
    if(val1 >= 100 && val2 == 33 && (val3 > 20 && val3 < 250))
     
    Беженарь Миша нравится это.
  16. Спасибо:)