Переменная не изменяется,где я накосячил?
- Войдите на сайт для отправки комментариев
Сб, 24/12/2016 - 13:47
Затеял элементарную програмку на LCD Keypad Shield/
Насос долива в расширительный бак ,должен включаться через определенные промежутки времени(после отсутствия сигнала с датчика), и выключаться по приходу сигнала с датчика , задержка регулируется кнопками на плате шилда.
Набросал скетч,(чтение датчика позже добавлю) но переменная (paus) не хочет меняться при нажатии кнопок.
Добавил Serial чтоб смотреть что происходит, нажатия видны а переменная не меняется(
Прочитал этюды на форуме, но что то я недопонял с переменными, или накосячил в синтаксисе, или переменную определяю не в том месте.
Ткните носом что не так.
Почему переменная (paus) не меняется?, и как исправить?
[code] #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Для MEGA,(3, 5, 9, 10, 11, 12),Для UNO (8, 9, 4, 5, 6, 7 ) int paus = 15; //Значение паузы по умолчанию мин. void setup() { //int paus = 15; //Значение паузы по умолчанию мин. lcd.begin(16, 2); //Установка длинны-ширины дисплея lcd.clear(); //Очистка экрана lcd.setCursor(0, 0); lcd.print("TIMER NASOS="); lcd.setCursor(13, 0); // Ставим курсор только для принта паузы lcd.print (paus); ///В этом месте переменная печатается НОРМАЛЬНО lcd.setCursor(0, 1); lcd.print("Press UP or DOWN"); Serial.begin(9600); //Добавлен только для отладки } void loop() { // Опрос кнопок LCD Keypad Shield int x; x = analogRead (0); lcd.setCursor(13, 0); if (x < 200) { /////////////////////////////////////////////// lcd.print ("Up "); // Кнопка Вверх прибавляем таймер int paus = paus + 1; } //////////////////////////////////////////////// else if (x < 400) { lcd.print ("Down "); // Кнопка Вниз убавляем таймер int paus = paus - 1; } delay (300); //Задержки только для удобства просмотра в Serial lcd.print (paus); Serial.println(paus);//Отправляем в Serial значение паузы Serial.println(x); //Отправляем в Serial считанные значения кнопок delay (300); } [/code]
строки 30 и 36 описывают и инициализируют НОВУЮ переменную, с тем же именем paus, которая существует ТОЛЬКО до закрывающей фигурной скобки.
А как тогда к переменной плюсовать и отнимать значение?при нажатии
А как тогда к переменной плюсовать и отнимать значение?при нажатии
Тупой? Просто слово int убрать в 30 и 36 строках.
Не тупой,? просто для меня стало открытием что переменные меняются без каких либо команд , а просто имя и + -
Спасибо!!,,пишу дальше сенсорную часть
int blablabla;
или
int blablabla = 13;
или
int blablabla = (fuck14 + 88)* 666;
ЭТО ОБЪЯВЛЕНИЯ ПЕРЕПЕННЫХ!!!!! Вы читали учебник програмирования на С?
в отличии от просто оператора присваивания :
paus = paus +1; или paus = blablabla * 666;
Вы уже пытаетесь создавать программу, не понимая нихера в том, что пишите, на каком языке и за каким хером?
Харош орать! Читаю учебник, по мере понимания
Вы походу родились со знанием С ??,,или сами такими не были?.
Форум для этого и существует.
Едем дальше,
Задаешь на форуме тупой вопрос - плати унижением за помощь. Не нравится - скатертью по жопе.
Форум существует не для ответов на вопросы (внезапно?), а для общения по интересам в рамках данного хобби (в нашем случае - Ардуино).
Новички и чайники - тут вообще не нужны никому. Если сразу нахер не послали, а помогли советом, нужно кланяться и, гладя в пол, отвечать "Домо аригато, сенсей!".
Опять затык.
При значении паузы из двух символов 10,11,20 и тд при печати одного символа не удаляется второй оставшийся.
Как дабавить в команду печать пробела после символов?
Такая связка 42 не работает lcd.print ((paus),(" ")); , синтаксис какой то неправильный, второй символ не меняется и не стирается.А после старта первый символ вообще БУКВЕННЫЙ, хз чо такое
Или остается только стирание области перед печатью?
Опять затык.
При значении паузы из двух символов 10,11,20 и тд при печати одного символа не удаляется второй оставшийся.
Как дабавить в команду печать пробела после символов?
Такая связка 42 не работает lcd.print ((paus),(" ")); , синтаксис какой то неправильный, второй символ не меняется и не стирается.А после старта первый символ вообще БУКВЕННЫЙ, хз чо такое
Или остается только стирание области перед печатью?
Вам здесь почитать
В lcd и в Serial один и тот же print, это называется ООП - Объектно Ориентированное Программирование.
Прочитайте про print() вот тут, на этом сайте в разделе "Программирование".
Писать придется так:
lcd.print(pause); lcd.print(" ");
то есть по очереди.
Потом,, если станете (вдруг?) программистом, то найдете еще пару способов. А пока - так.