Долгое удержание кнопки - вкл/выкл подсветки
- Войдите на сайт для отправки комментариев
Втр, 23/08/2022 - 16:19
Всем привет. Почему может не срабатывать корректно условие:
....... boolean changeFlag = false; ..... if (button.isHolded() && changeFlag == false) { //mode = 0; lcd.backlight(); changeFlag = true; } if (button.isHolded() && changeFlag == true){ lcd.noBacklight(); changeFlag = false; }
Т.е. по удержанию нажатой кнопки - включить подсветку, при удержании еще раз выключить подсветку. Сейчас только включается ((((
"Огласите весь список"
Всем привет. Почему может не срабатывать корректно условие:
......
Покажи весь код. Вот эта переменная глобальная?
Нет, локальная
Нет, локальная
тогда код работает, как написано
не дошло еще?
Выглядит все так:
попробуй
Нет не работает
Нет не работает
код из #6 не компилируется, в нет как минимум нет setup()
выложи полный код после всех исправлений
Нет не работает
Весь код выложи.
Строка 13:
changeFlag =
true; будет выполнено в любом случае, а не только если mode > 1. Почему, сам догадаешься?
Хочешь сказать у него isClick() происходит одновременно с isHolded() ? (Гайвер-кнопка чоле?)
Неважно, что там происходит, важно, как написано ))
Хочешь сказать у него isClick() происходит одновременно с isHolded() ? (Гайвер-кнопка чоле?)
После then выполняется только один оператор.
Хочешь сказать у него isClick() происходит одновременно с isHolded() ? (Гайвер-кнопка чоле?)
После then выполняется только один оператор.
А если я его код по нормальному отформатирую?
ТС говорит, что у него срабатывает только на включение, так вот 13 строка ясно говорит, что задуманное им работать не будет. Он, видимо, решил, что раз написал два оператора в одной строке, то и срабатывать они будут по одному условию. Только компилятору на это начхать ))
Иными словами у него по любому isClick() будет changeFlag = true; И никакие isHolded тут уже ничего не решают
неиспользование в ифах фигурных скобок и к не такому приводит
А тут уже большой вопрос к ТС: Нажимает ли он один раз при проверке или только долгое удержание....
Да что там спрашивать - у него чётко написано: только после второго клика. Строка 13 )))
Там такого не написано, так то... ))
Написано. Условие if(mode > 1). А строкой выше mode++ на каждый isClick. Стало быть первый клик пропускается.
может у него mode инициализуется единицей :) - этого в коде нет
И вообще, нафига на него время тратить? - он проигнорировал просьбу выложить полный код - до свиданья
Там чуть ниже есть сравнения mode == 0 и mode == 1. Так что скорее всего нулем
И вообще, нафига на него время тратить? - он проигнорировал просьбу выложить полный код - до свиданья
Скучно )))
Всем привет. Почему может не срабатывать корректно условие:
Т.е. по удержанию нажатой кнопки - включить подсветку, при удержании еще раз выключить подсветку. Сейчас только включается ((((
Если условие в строке 6 срабатывает, то changeFlag становится true (строка #9), и тогда условие в строке №12 тоже обязательно срабатывает.
Т.е. всю эту хрень можно смело заменить на
Уверен, что задумано было не так.
Ха, точно ))))
А я что-то сначала протупил....
Даёшь лаконичность!)
Даёшь лаконичность!)
Ну, если лозунг таков, то зачем так длинно?
зачем так длинно?
Пятница же, можно и по рассуждать )))
ЗЫ: Пробовал, continue в условии не работает (ну я не смог)....
А может быть break и сработает, не пробовал...
Ну, если лозунг таков, то зачем так длинно?
Так не Brainfuck всё же ж.)
Даёшь лаконичность!)
Ну, если лозунг таков, то зачем так длинно?
Не знаю, но еще вариантов подкину:
И тут уж так, поржать (пятница же):
Так не Brainfuck всё же ж.)
И то, правда.
Да, у меня-то заход поскромнее был. Если стоит задача лаконичности, то почему вместо
не писать
Да, у меня-то заход поскромнее был. Если стоит задача лаконичности, то почему вместо
не писать
Да, при этом нужно не забывать чему равен true.) Кстати, некоторые компиляторы выдают предупреждение на запись типа changeFlag = !changeFlag. Приведение int к bool им, видите ли, не нравится.
читая заголовок - долгое удержание не полезно....