Как присвоить переменной число?

sergkr1983
Offline
Зарегистрирован: 09.12.2015

Здравствуйте все. Что-то понять не могу почему не получаеться присвоить переменной число. Делаю так:

До void setup() 

long CHPlus = 16769565;

В теле программы уже:

          switch (results.value) {
           case CHPlus:
              
              lcd.setCursor(2,5);
              lcd.print("OK1");
           break;
           case 16769055:
             
             lcd.setCursor(2,5);
              lcd.print("OK2");
           
           break;
}

Вот на CHPlus и ругается. Если прям числом записать - всё работает.

Araris
Offline
Зарегистрирован: 09.11.2012

"Оператор switch сравнивает значение переменной со значением, определенном в операторах case. Когда найден оператор case, значение которого равно значению переменной, выполняется программный код в этом операторе."

http://arduino.ru/Reference/SwitchCase

Хотите сравнивать с переменными - if, else if, else if и т.д.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Добавьте слово const в самое начало строки

long CHPlus = 16769565;

sergkr1983
Offline
Зарегистрирован: 09.12.2015

Так это-то и понятно. До оператора switch у меня:

if ( irrecv.decode( &results )) { // если данные пришли

т.е. мне и нужно сравнить то что пришло. Приходят цифры (типа 16738455) с пульта. Вот хотел все эти циферки в более удобный вид привести, чтоб каждый раз не набирать их (их много и свитчей тоже много).

А ругается у меня "the value of 'CHPlus' is not usable in a constant expression"

sergkr1983
Offline
Зарегистрирован: 09.12.2015

ЕвгенийП пишет:

Добавьте слово const в самое начало строки

long CHPlus = 16769565;

Ой. Спасибо. Помогло.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sergkr1983 пишет:

Ой. Спасибо. Помогло.

Блин, я уж думал, ято совсем умом тронулся, написал пример, скомпилировал  у себя, убедился, что всё нормально и совсем было собрался громко ругаться :)

sergkr1983
Offline
Зарегистрирован: 09.12.2015

ЕвгенийП пишет:

Блин, я уж думал, ято совсем умом тронулся, написал пример, скомпилировал  у себя, убедился, что всё нормально и совсем было собрался громко ругаться :)

Ошибку свою не сразу понял. Просто перед switch (ради проверки) продублировал без const. Убрал строку и всё заработало.

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Еще в таких ситуациях #define можно использовать