Использование датчика касания

Датчик касания определяет, нажата ли кнопка на передней поверхности датчика. Датчик касания можно использовать, например, для того, чтобы определить, когда робот наезжает на что-либо. Также на датчик касания можно надавить пальцем, чтобы он сработал.
Датчик касания может показывать, что он либо нажат, либо нет. Он не может измерить, как далеко или насколько сильно вдавлена кнопка. Датчик касания дает логические данные (истина или ложь). Положение кнопки датчика касания называется ее состоянием, при этом истина соответствует нажатию, а ложь соответствует отсутствию нажатия (освобождению).

Датчик касания также может отслеживать, была ли раньше нажата кнопка и затем отпущена. Это называется «Щелчок» и применяется, например, для обнаружения нажатия пальцем. Для получения дополнительной информации см. раздел «Понятие «щелчок»».
Данные датчика касания
Датчик касания может выдавать следующие данные:
ДанныеТипПримечания
Состояние Логическое значениеИстина, если кнопка нажата, и ложь, если не нажата.
Нажатие Логическое значениеИстина, если нажата, ложь, если не нажата (так же, как состояние).
Освобождение Логическое значениеЛожь, если нажата, истина, если не нажата (противоположно состоянию).
Щелчок Логическое значениеИстина, если раньше кнопка была нажата и отпущена. Для следующего наступления состояния «Щелчок» потребуется новое нажатие и освобождение.
Примеры использования состояния «Нажатие»
Ниже приведено несколько примеров использования данных датчика касания в режиме «Нажатие».
Пример 1: Двигаться до нажатия датчика касания
Эта программа заставляет робота ехать прямо вперед до тех пор, пока не будет нажат датчик касания, затем робот останавливается. Программа использует блок «Ожидание» с режимом «Датчик касания – Сравнение – Касание» для проверки нажатия.
Советы и подсказки
Не забывайте использовать режим «Включить» блока «Рулевое управление», если вы хотите двигаться, ожидая сигнала датчика.
Пример 2: Мотор начинает работать каждый раз, когда удерживается датчик касания (способ 1)
Эта программа заставляет мотор начинать работу каждый раз, когда датчик касания нажат и удерживается. Мотор останавливается каждый раз, когда датчик касания освобождается. Программа использует блок «Если ... то» с режимом «Датчик касания – Сравнение – Касание» для проверки нажатия. Результат проверки используется для выбора между включением и выключением мотора. Проверка повторяется непрерывно в цикле.
Пример 3: Заставить пульсировать индикатор состояния модуля каждый раз, когда удерживается датчик касания.
Эта программа включает оранжевый индикатор состояния модуля и заставляет его пульсировать, когда датчик касания удерживается. Она использует блок датчика касания в режиме «Измерение» для определения состояния датчика касания. Результат передается на ввод «Пульс» блока кнопок управления модулем с помощью шины логических данных.
Примеры использования состояния «Освобождение»
Ниже приведено несколько примеров использования данных датчика касания в состоянии «Освобождение».
Пример 4: Подавать звуковой сигнал при каждом нажатии датчика касания
Эта программа производит короткий звуковой сигнал при каждом нажатии датчика касания. При каждом нажатии звучит только один сигнал. Программа использует блок ожидания сигнала датчика в режиме «Датчик касания – Сравнение – Касание» для проверки состояния «Нажатие», а затем другой блок ожидания сигнала датчика для ожидания состояния «Освобождение», прежде чем продолжится цикл.
Советы и подсказки
Если вы удалите «Ожидание состояния «Освобождение»» из этой программы, то обнаружите, что сигнал будет звучать столько, сколько удерживается датчик касания. Это происходит потому, что «Ожидание состояния «Нажатие»» сразу же переходит к следующему блоку, если датчик касания уже нажат. Проверьте!
Пример 5: Мотор начинает работать каждый раз, когда удерживается датчик касания (способ 2)
Эта программа заставляет мотор начинать работу каждый раз, когда датчик касания нажат и удерживается. Мотор останавливается каждый раз, когда датчик касания освобождается. Программа использует блок ожидания сигнала датчика в режиме «Датчик касания – Сравнение – Касание» для ожидания состояния «Нажатие», чтобы запустить мотор, а затем другой блок ожидания сигнала датчика для ожидания состояния «Освобождение», прежде чем остановить мотор. Процесс повторяется циклически.
Советы и подсказки
Эта программа делает то же самое, что и в примере 2 выше, но использует другой способ.
Понятие «Щелчок»
Кроме сообщения о том, в каком состоянии – «Нажатие» или «Освобождение» – сейчас находится кнопка датчика касания, датчик касания также отслеживает, была ли она нажата и освобождена ранее. Это называется «Щелчок». Это позволяет легко узнать, был ли датчик касания нажат, как кнопка, без необходимости постоянно проверять, что он был нажат, и затем ожидать, когда он будет освобожден.

Когда датчик касания покажет, что он пришел в состояние «Щелчок», он не будет снова отображать такое состояние до тех пор, пока датчик касания снова не будет нажат и снова отпущен. Это позволяет иметь уверенность, например, что каждое нажатие соответствует действию, которое произошло только однажды.

В таблице ниже показан пример, в котором датчик касания нажат и освобожден дважды, как серия шагов. В таблице показан результат проверки программой состояния «Нажатие», «Освобождение» и «Щелчок» после каждого действия.
ШагДействиеНажатиеОсвобождениеЩелчок
1 Кнопка в начале освобожденаЛожьИстинаЛожь
2 Кнопка нажатаИстинаЛожьЛожь
3 Кнопка освобожденаЛожьИстинаИстина
4 Кнопка все еще освобождена, и программа снова проверяет датчик касанияЛожьИстинаЛожь
5 Кнопка нажата повторноИстинаЛожьЛожь
6 Кнопка удерживается , и программа снова проверяет датчик касанияИстинаЛожьЛожь
7 Кнопка освобожденаЛожьИстинаИстина
8 Кнопка все еще освобождена, и программа снова проверяет датчик касанияЛожьИстинаЛожь
Обратите внимание, что когда кнопка удерживается, датчик касания будет продолжать показывать состояние «Нажато» каждый раз при проверке его программой. Однако после освобождения кнопки датчик покажет «Щелчок» только при первой проверке программой состояния «Щелчок». Датчик не покажет вновь состояние «Щелчок» до тех пор, пока он снова не будет нажат и освобожден.
Примеры использования состояния «Щелчок»
Ниже приведено несколько примеров использования данных датчика касания в состоянии «Щелчок».
Пример 6: Изменить экран, когда датчик касания будет нажат
Эта программа отобразит на экране модуля EV3 «Ноль», затем «Один», затем «Два», изменяя экран каждый раз, когда датчик приходит в состояние «Щелчок» (нажат и освобожден).
Советы и подсказки
Если вы измените блоки «Ожидание сигнала датчика» блоков в этой программе, чтобы проверить состояние «Нажатие» вместо «Щелчок», вы обнаружите, что экран переходит от «Ноль» сразу к «Два», пропуская «Один». Проверьте! Это происходит потому, что блоки «Экран» работают так быстро, что когда происходит вторая проверка ожидания состояния «Нажатие», ваш палец все еще удерживает кнопку после первого нажатия, таким образом, второе ожидание заканчивается немедленно. При проверке состояния «Щелчок» для каждого отдельного нажатия только одна проверка будет успешной.
Пример 7: Двигаться по схеме до нажатия датчика касания
Эта программа заставляет робота повторять схему движения прямо, затем повернуть до тех пор, пока не будет нажат датчик касания, действующий как кнопка «Стоп» на роботе. После нажатия датчика касания робот остановится после следующего поворота. Эта программа использует блок «Цикл» в режиме датчика касания для повторения движения до тех пор, пока датчик касания не придет в состояние «Щелчок» (нажат и освобожден).
Советы и подсказки
Если вы попробуете запустить программу, используя «Нажатие» вместо «Щелчок», то обнаружите, что нажатие датчика касания обычно не вызывает остановку робота. Проверьте! Это происходит потому, что цикл проверяет датчик только короткое время после завершения двух блоков перемещения. Если вы нажмете и отпустите датчик, пока блоки перемещения работают, состояние «Нажатие видно не будет». Используя «Щелчок», датчик касания запоминает, что он был нажат и отпущен ранее.
Блоки и режимы датчика касания
В таблице ниже показаны все программные блоки и режимы датчика касания.
БлокРежимИспользование
ОжиданиеДатчик касания – СравнениеПодождите, пока датчик касания не будет в положении «Нажатие», «Освобождение» или «Щелчок».
ОжиданиеДатчик касания – ИзменениеПодождите, пока состояние датчика касания не изменится.
ЦиклДатчик касанияПовторяйте последовательность блоков до тех пор, пока датчик касания не будет в положении «Нажатие», «Освобождение» или «Щелчок».
Если ... тоДатчик касанияВыберите между двумя последовательностями блоков, в зависимости от того, находится ли датчик касания в положении «Нажатие», «Освобождение» или «Щелчок».
Датчик касанияИзмерениеПолучите данные о текущем состоянии датчика касания (нажат или нет) через шину логических данных.
Датчик касанияСравнениеПроверьте, находится ли датчик касания в положении «Нажатие», «Освобождение» или «Щелчок», и получите результат через шину логических данных.
Регистрация данныхСм. «Регистрация данных».
Касание
Быстрые ссылки