shto neprovelno nopisal shtob ne robotayet if(payload="ON"){ digitalWrite(ledPin,HIGH); }else if(payload="OFF"){ digitalWrite(ledPin,LOW); }
Чтобы ответить на Ваш вопрос нужно знать тип переменной payload, что это String, массив char или что-то еще. Если это String, то ошибка понятна, одинарное =, это операция присвоения. А вот двойное ==, это операция сравнения. Тогда, нужно изменить код на этот Код (C++): if(payload=="ON") { digitalWrite(ledPin,HIGH); } else if (payload=="OFF") { digitalWrite(ledPin,LOW); }
думаю правильно будет так Код (C++): { if(payload=="ON") { digitalWrite(ledPin,HIGH); } else { digitalWrite(ledPin,LOW); } }
Запрета на присваивание внутри условия нет. Быть может, ТС хотел получить эквивалент вот этого: Код (C++): payload="ON"; digitalWrite(ledPin,HIGH); А если серьезно, присваивание вместо сравнения очень распространенная ошибка, причем компилятор её пропускает, т.к. синтаксической ошибки нет.
Да, не правильно выразил свою мысль. Хотел сказать, что в зависимости от типа данных будут разные примеры, сравнить так массив уже не получится придется использовать memcmp и т.д.