Ошибка в операторе if или особенности вывода на дисплей?

Lictor
Offline
Зарегистрирован: 01.10.2015

Вне зависимости от показаний на аналоговом выводе на экран выводятся обе строки из обоих операторов if. В чем ошибка?

 

const int analogInPin = A1;   // потенциометр
int potenciometr = 0;
long previousMillis = 0;
long interval = 1000;
#include <LiquidCrystal.h> //Подключаем библиотеку для работы с LCD
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // инициализируем LCD, указывая управляющие контакты
int potenciometr1 = 0;
 
void setup() {
   lcd.begin(20, 4);// задаем размерность дисплея
 pinMode(analogInPin, INPUT);
 Serial.begin(9600); //монитор порта
}
 
void loop() {
unsigned long currentMillis = millis();     //задаем переменную равную времени
      //проверяем не прошел ли нужный интервал, если прошел то
      if (currentMillis - previousMillis > interval) {  
 Serial.println(potenciometr);
  potenciometr = analogRead(analogInPin); //показания потенциометра
  previousMillis = currentMillis;
  potenciometr1 = potenciometr+1;
      }
  
  if (0<=potenciometr1<=305) {
    lcd.setCursor(0, 1); //выставим курсор и введем  фразу
  lcd.print(potenciometr);
}
 
if (305<potenciometr1<=1230) {
    lcd.setCursor(1, 2); //выставим курсор и введем  фразу
  lcd.print(potenciometr);
}
}
__Alexander
Offline
Зарегистрирован: 24.10.2012

так не пишут. надо так:

 if (potenciometr1 >= 0  && potenciometr1 <=305) 

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

Lictor пишет:
Ошибка в операторе if или особенности вывода на дисплей?
Ошибка в записи оператора if - учите язык на котором пишете.

Коллеги, запомните, таких ошибок, что что-то работает не так в основных конструкциях языка в компиляторах не бывает! Ищите ошибки у себя и не смешите всех окрестных куриц заявлениями, что "if работает неправильно" или тут как-то было "define работает неправильно".

Кстати, в мире ничего не меняется. Склонность людей сваливать собственное незнание на то, что что-то неработает неизлечима. Помни ещё в начале восьмидесятых, каждый третий входивший в комнату группы системной поддержки юзер начинал свой спич с сакраментальной фразы: "у вас фортран не работает".

Lictor
Offline
Зарегистрирован: 01.10.2015

я не правильно выразился: я ни в коем случае не подразумевал что оператор работает некоректно, подразумевалась именно ошибка в записи. Ранее я програмировал на Паскале, там такая форма записи вполне работала

__Alexander
Offline
Зарегистрирован: 24.10.2012

да, это стандартный косяк при переходе с паскаля на си. для паскаля такая запись правильная.