Ошибка в операторе if или особенности вывода на дисплей?
- Войдите на сайт для отправки комментариев
Чт, 01/10/2015 - 10:52
Вне зависимости от показаний на аналоговом выводе на экран выводятся обе строки из обоих операторов 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);
}
}
так не пишут. надо так:
if (potenciometr1 >= 0 && potenciometr1 <=305)
Коллеги, запомните, таких ошибок, что что-то работает не так в основных конструкциях языка в компиляторах не бывает! Ищите ошибки у себя и не смешите всех окрестных куриц заявлениями, что "if работает неправильно" или тут как-то было "define работает неправильно".
Кстати, в мире ничего не меняется. Склонность людей сваливать собственное незнание на то, что что-то неработает неизлечима. Помни ещё в начале восьмидесятых, каждый третий входивший в комнату группы системной поддержки юзер начинал свой спич с сакраментальной фразы: "у вас фортран не работает".
я не правильно выразился: я ни в коем случае не подразумевал что оператор работает некоректно, подразумевалась именно ошибка в записи. Ранее я програмировал на Паскале, там такая форма записи вполне работала
да, это стандартный косяк при переходе с паскаля на си. для паскаля такая запись правильная.