pomogite pojalsuta

Тема в разделе "Arduino & Shields", создана пользователем seroj, 28 фев 2016.

  1. seroj

    seroj Нуб

    shto neprovelno nopisal shtob ne robotayet

    if(payload="ON"){
    digitalWrite(ledPin,HIGH);
    }else
    if(payload="OFF"){
    digitalWrite(ledPin,LOW);
    }
     
  2. noevile

    noevile Гик

    открой пример с кнопкой в Arduino IDE и сравни
     
  3. Alex19

    Alex19 Гуру

    Чтобы ответить на Ваш вопрос нужно знать тип переменной payload, что это String, массив char или что-то еще.

    Если это String, то ошибка понятна, одинарное =, это операция присвоения. А вот двойное ==, это операция сравнения. Тогда, нужно изменить код на этот

    Код (C++):

    if(payload=="ON")
    {
       digitalWrite(ledPin,HIGH);
    }
    else if (payload=="OFF")
    {
       digitalWrite(ledPin,LOW);
    }
     
     
  4. Mestniy

    Mestniy Гуру

    Может просто пытались кусок скомпилировать?
    Можно полный код?
     
    Последнее редактирование: 29 фев 2016
  5. Airbus

    Airbus Радиохулиган Модератор

    думаю правильно будет так
    Код (C++):
    {
    if(payload=="ON")
    {
       digitalWrite(ledPin,HIGH);
    }
    else
    {
       digitalWrite(ledPin,LOW);
    }
    }
     
  6. Sindbad

    Sindbad Гик

    Запрета на присваивание внутри условия нет. Быть может, ТС хотел получить эквивалент вот этого:
    Код (C++):

    payload="ON";
    digitalWrite(ledPin,HIGH);
    А если серьезно, присваивание вместо сравнения очень распространенная ошибка, причем компилятор её пропускает, т.к. синтаксической ошибки нет.
     
  7. Alex19

    Alex19 Гуру

    Да, не правильно выразил свою мысль.

    Хотел сказать, что в зависимости от типа данных будут разные примеры, сравнить так массив уже не получится придется использовать memcmp и т.д.
     
  8. seroj

    seroj Нуб

    sposibo ne videl shto odin = vstovil
     
  9. CutToSleep

    CutToSleep Нерд

    Тоже недавно такая глупая ошибка была, вот что значит в детстве к Паскалю привыкнуть:)