Помогите организовать задержку.
- Войдите на сайт для отправки комментариев
Вс, 20/11/2016 - 05:01
Все когда-то начинают. Не пинайти сильно. Забить в поиск честно пытался несколько дней. Прошу помощи в следующем.
Нужно организовать нажатие двух клавиш определенным образом. Сочетание клавиш Alt+Tab.
Возможно это можно сделать при помощи while.
Смысл такой:
if (data=="значение") Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB);
И вот тут нужна помощь - нужна задержка в 3 секунды. Если за 3 секунды не появляется снова "значение"- то нужен
Keyboard.release(KEY_LEFT_ALT); keyboard.press(KEY_ESC) ;
Еслиже за 3 секунды "значение" на int analogPin=1; снова появляется то:
Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB);
Столько раз сколько "значение" появляется. И после появления уже delay- на 1 секунду и
Keyboard.releaseAll();
класс титановый велосипед StopWatch.
Angels13, натболее простой вариант - конечный автомат.
Заводите две переменные: одна запоминает нужный момент времени, другая хранит текущее состояние.
Сначала вторая переменная хранит исходное состояние, например, 0.
При наступлении события А запоминаем в первой переменной время наступления и переводим вторую переменную в следующее состояние, например, 1.
А дальше, находясь в 1 состоянии анализируем:
- если истекло время (таймаут), выполняем одну последовательность действий и, возможно, меняем состояние,
- если наступило событие А, выполняем другую последовательность действий и, возможно, меняем состояние,
- если наступило событие В, выполняем...
В 0-м состоянии, если я правильно понял задачу, анализируем лишь наступление события А и ничего больше.
Для всех прочих состояний (2, 3...) расписываем другие варианты реакции на события, включая таймаут.
Естественно, предусматриваем, к каких случаях нужно менять первую переменную (момент времени), а в каких - нет.
Angels13, натболее простой вариант - конечный автомат.
Заводите две переменные: одна запоминает нужный момент времени, другая хранит текущее состояние.
Сначала вторая переменная хранит исходное состояние, например, 0.
При наступлении события А запоминаем в первой переменной время наступления и переводим вторую переменную в следующее состояние, например, 1.
А дальше, находясь в 1 состоянии анализируем:
- если истекло время (таймаут), выполняем одну последовательность действий и, возможно, меняем состояние,
- если наступило событие А, выполняем другую последовательность действий и, возможно, меняем состояние,
- если наступило событие В, выполняем...
В 0-м состоянии, если я правильно понял задачу, анализируем лишь наступление события А и ничего больше.
Для всех прочих состояний (2, 3...) расписываем другие варианты реакции на события, включая таймаут.
Естественно, предусматриваем, к каких случаях нужно менять первую переменную (момент времени), а в каких - нет.
Спасибо. А в кодовом виде как это будет выглядеть? Я понимаю смысл. Понимаю что надо ввести несколько flag.
Указать в начале исходное состояние int=1024 кнопки.
Упираюсь только в отсрочку времени на 3 секунды. И условия для нее.
ну, как можно настолько тупить? - так класс титановый велосипед StopWatch. это будет выглядеть.
заставь свой мосг работать, зайди в тему по ссылке и почитай.
ну, как можно настолько тупить? - так класс титановый велосипед StopWatch. это будет выглядеть.
заставь свой мосг работать, зайди в тему по ссылке и почитай.
Я могу понять ваше недовольство. Но всетаки. Я изучаю ардуино исключительно для определенной цели. Вероятнее всего дальше назначений определенных функций дело не пойдет. Поэтому изучение языка ардуино полностью со всеми нюансами просто не целесообразно. Ваш титановый велосипед дает лишь таймер между двумя событиями. Как же прописать эти событиях а также взаимодействия между ними нет. Поэтому я спрашиваю помощи.
ок. тогда возвращаешься в детство пяти лет и учишься формулировать свои мысли - вернёшься через двадцать лет сюда.
Angels13, я ж не просто так писл "событие А"/"событие В" или "одна последовательность действий"/"другая...".
В вашем первом сообщении очень много пробелов, поэтому построить по нему алгоритм невозможно. А задавать Вам кучу дополнительных вопросов - лень.
Я дал общий скелет. Попытайтесь на основании этого скелета:
- сообразить, какие именно у Вас могут реализоваться состояния (все возможные) и сколько их,
- какие именно события Вы должны обрабатывать (полный список, включая таймаут),
- подробно расписать, как в каждом из состояний Вы планируете реагировать на каждое из событий.
Собственно, после этого останется только перевести текст с русского на Си.
Angels13, я ж не просто так писл "событие А"/"событие В" или "одна последовательность действий"/"другая...".
В вашем первом сообщении очень много пробелов, поэтому построить по нему алгоритм невозможно. А задавать Вам кучу дополнительных вопросов - лень.
Я дал общий скелет. Попытайтесь на основании этого скелета:
- сообразить, какие именно у Вас могут реализоваться состояния (все возможные) и сколько их,
- какие именно события Вы должны обрабатывать (полный список, включая таймаут),
- подробно расписать, как в каждом из состояний Вы планируете реагировать на каждое из событий.
Собственно, после этого останется только перевести текст с русского на Си.
Angels13, если уж Вы цитируете сообщение, то хотя бы пишите, что имеете в виду. А то после цитирования с одной стороны совершенно очевидно, что ни один из трех рекомендуемых мной пунктов не выполнен, а с другой - появляется код, который делает что-то странное, но что он должен делать на самом деле, непонятно, т.к. Вы этого не написали.
ардуино нано . Подключенно 3 кнопки к земле на D10 D11 D12 Диоды 5 штук на D2 D3 D4 D5 D6 и транзистор упровляющий включением форсунок на стенде промывки форсунок. Нужно организовать 5 режимов промывки каждый из которых бы выбирался кнопками и у каждого была своя частота и скважность.
прекрасно - создавай свою тему, публикуй там свой код, если не умеешь, то сюда Ищу исполнителя