ARDUINO IF с двумя переменными

SNR93

✩✩✩✩✩✩✩
7 Ноя 2018
9
0
C++:
int si_full_irrigation = 220; //переменная влажной почвы
int si_null_irrigation = 600; //переменная сухой почвы

void loop() {
  if (sensorState == HIGH) {                                                                    //если вода есть
    Serial.print("Вода: есть. Влажность ");Serial.print(si_value_percent);Serial.println("%");
        if (si_full_irrigation >= sivalue && sivalue <= si_null_irrigation) {                  //и уровень влаги НЕ в норме
           Serial.println("Нужен полив");                                                       //то поливаем
          } else {                                                                              //иначе
          Serial.println("Не нужен полив");                                                     //ничего не делаем
        }
  } else {
    Serial.print("Вода: нет. Влажность ");Serial.print(si_value_percent);Serial.println("%");
  }
}
накидал такую конструкцию. Но он мне говорит что влажность 0 полив не нужен, но если влажность 1023, то полив нужен. Что не так?
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,200
1,287
Москва
На синем глазу мне кажется, что знаки больше или меньше стоят не в ту строну.
Сами подставьте вместо переменных значения и посмотрите что выходит
 

SNR93

✩✩✩✩✩✩✩
7 Ноя 2018
9
0
На синем глазу мне кажется, что знаки больше или меньше стоят не в ту строну.
Сами подставьте вместо переменных значения и посмотрите что выходит
да вроде все ок. В целом немного изменил код, но все равно не понимаю что не так. Присвоил пока переменной, которая должна забирать значение с датчика, жесткое значение, но все равно работает не так

C++:
int sivalue = 400; //переменная для сохранения значение с датчика влажности
int si_full_irrigation = 220; //переменная влажной почвы
int si_null_irrigation = 600; //переменная сухой почвы

...

void loop() {
...
  if (sensorState == HIGH) {                                                     //если вода есть
        //220 >= 400 <= 600
        if (si_full_irrigation >= sivalue && sivalue <= si_null_irrigation) {    //и уровень влаги в норме
           Serial.print(sivalue);Serial.println("Полив не нужен");               //то не поливаем
          } else {                                                               //иначе
          Serial.print(sivalue);Serial.println("Нужен полив");                   //поливаем
        }
  } else {}
]
но в этой схеме он мне говорит, влажность 400, полив нужен. Почему нужен то, если 400 меньше 600
 

bort707

★★★★★★✩
21 Сен 2020
2,921
868
@SNR93, говорят же вам - проблема со знакми сравненя!
У вас вот что написано
C++:
if (220 >= sivalue && sivalue <= 600)
исправляйте
 

Nikanor

★★✩✩✩✩✩
1 Окт 2020
180
52
совет -
присваивать переменным понятные и не супер длинные имена,
не писать кучу выражений в одну строку,
перед публикацией отформатировать код (ctrl + T).

тогда код будет читаемым и легче найти ошибку или проблему.