Хотя возможно и иногда желательно использовать прерывания смены контактов для считывания состояния кнопок, проще опрашивать состояние кнопок loop()
. Это часто используемая техника.
Если вы loop()
выполняете достаточно быстро, то нажатия кнопок всегда будут срабатывать, и пользователь не сможет ощутить задержку или задержку.
Вполне возможно, что ваш цикл займет столько времени, что приведет к задержке или задержке.
Вопрос в том, как долго, в общем-то, пользователь увидит это?
loop()
работаете довольно медленно (я имею в виду, что это слишком медленно, чтобы дать возможность достаточно быстрой обратной связи с конечным пользователем), вы можете использовать ISR при изменении уровня вывода и обеспечить немедленную обратную связь (если это можно быстро рассчитать) для пользователя или дать ему временную обратную связь (например, горит светодиод), чтобы сообщить ему, что его запрос был распознан и будет обработан в ближайшее время (вloop()
); Вы позволитеloop()
, установив некоторую глобальнуюbool
переменную в ISR.Ответы:
Короткий ответ: у вас есть 100 миллисекунд, чтобы ответить пользователю, если вы хотите, чтобы он почувствовал, что действие произошло мгновенно.
Согласно Джейкобу Нильсену в своей книге « Usability Engineering» от 1993 года, которая считается важным справочником в области юзабилити систем и пользовательского опыта
Он также упоминает, что этот основной совет относительно времени отклика был примерно одинаковым на протяжении многих десятилетий [Miller 1968; Card et al. 1991].
Я взял эту цитату из этой статьи: Время ответа: 3 важных предела , также написанных Джейкобом Нильсеном.
Обратите внимание, что за это время вы должны включить все время, затраченное на чтение кнопки и дать отзыв пользователю.
Другие пороговые значения времени отклика, которые важны для взаимодействия с пользователем из того же источника, но не были упомянуты ОП напрямую:
источник
Общеизвестно, что люди не могут воспринимать изменения, когда они происходят менее чем через 10 мс после их действия. Эта отзывчивость приведет к опыту, который в последнее время в основном описывается как «мгновенный». Это заметно, но пользователям сложно назвать это имя.
Так что если вы хотите совершенства, примите около 15 мс задержки. Если вы хотите действительно хорошо, возьмите 100 мс задержки. 100 мс - это в среднем 50 мс, и, безусловно, пройдет для людей.
Приложение и ожидаемое время отклика также имеет жизненно важное значение. Раздвижная дверь или лифт имеют очень большой допуск (поскольку физический объект всегда будет занимать намного больше времени), тогда как интерфейсы торговых автоматов вообще не предоставляются.
Верхний предел для опроса будет около 1500 мс. Там люди всегда будут замечать, что это медленно.
Эти данные являются сугубо личным опытом геймера и программиста. YMMV и помните, что просто попробовать это самому - лучший способ узнать, каково это. Единственный «научный» ответ - это <10 миллисекунд, кроме того, речь идет о способности воспринимать задержку (которая варьируется в зависимости от человека и момента) и терпимости пользователя.
Как примечание стороны, вы можете попытаться изменить задержки, чтобы сэкономить время батареи или процессора, когда интерфейс не используется. Пользовательское действие, тем быстрее опрос. Когда приложение работает, опрашивайте очень медленно. Лучше опросить, когда это важно!
источник