Создание кодов программ для двух датчиков касания
Датчик касания как способ ориентации роботов
Представь, что ты находишься в полностью темной комнате, где ничего не видно и невозможно использовать зрение. В этом случае ты будешь полагаться на другие чувства, например двигаться на ощупь, вытянув вперед руки.
Если ты наткнешься на стену или другое препятствие, ты отойдешь от стены и повернешь либо налево, либо направо и пойдешь снова, вытянув руки вперед, пока не наткнешься на вторую стену, и снова отойдешь от стены и снова повернешь либо налево, либо направо
Этот метод ориентации может быть применен и в робототехнике, когда используются специальные сенсоры, такие как датчики касания (часто их называют кнопками), которые входят в набор конструктора.
Вспомни! Что такое датчик касания.
Датчик касания — это «палец» робота.
Он чувствует, когда что‑то нажимает на его кнопку.
Если нажать на кнопку — датчик посылает сигнал роботу: «Эй, меня коснулись!»
Зачем он нужен?
- Чтобы робот останавливался перед стеной.
- Чтобы он реагировал на нажатие кнопки.
- Чтобы понимал, где он находится (например, доехал ли до края стола).
Использование двух датчиков касания
- Если разместить два и более датчика касания на передней части робота, то в случае, если робот упрется в препятствие, сработают датчики, определят касание и робот отъедет от стены.
- После того как робот отъехал от препятствия на достаточное расстояние, он может совершить поворот и продолжать движение вперед.
Основные сценарии использования двух датчиков касания. Сценарий 1. Робот-исследователь препятствий
Задача: робот движется вперёд, пока не наткнётся на препятствие. В зависимости от того, какой датчик сработал, он объезжает препятствие слева или справа.
Расположение датчиков:
- левый датчик — спереди слева;
- правый датчик — спереди справа.
Логика работы:
- если сработал левый датчик → поворот направо;
- если сработал правый датчик → поворот налево;
- если сработали оба → отъезд назад и поворот на 90° в случайную сторону.
Основные сценарии использования двух датчиков касания. Сценарий 2. Робот-охранник периметра
Задача: робот патрулирует периметр и подаёт сигнал тревоги при касании любого из датчиков.
Расположение датчиков: по бокам робота (для контроля зоны вокруг).
Логика работы: если нажат хотя бы один датчик (логика «ИЛИ»), робот:
- останавливается;
- включает звуковой сигнал (сирену);
- мигает красным индикатором EV3-блока;
- ждёт 3 секунды;
- продолжает патрулирование.
Сценарий 3. Робот-парковщик
Задача: автоматическая парковка в ограниченном пространстве.
Расположение датчиков: спереди и сзади робота.
Логика работы: робот заезжает в бокс и определяет границы:
- передний датчик касается стены → остановка, отъезд назад;
- задний датчик касается стены → остановка, движение вперёд;
- оба датчика касаются стен → успешная парковка, звуковой сигнал.
Блок «Логические операции»
Для программирования сложных условий, в которых проверяется состояние двух датчиков, в среде программирования Lego Mindstorms Education EV3 используется блок «Логические операции».
Он находится в красной палитре «Операции с данными»
Логические операции: что это и зачем нужны?
Логические операции — это «слова» , которые помогают роботу принимать решения. Они отвечают на вопрос: «Что делать, если…?»
Основные операции для двух датчиков:
- И (AND) — робот реагирует, только если оба датчика нажаты одновременно. Пример: робот едет вперёд, пока не упрётся в угол (оба датчика коснулись стен).
- ИЛИ (OR) — робот реагирует, если нажат хотя бы один датчик. Пример: робот останавливается, если коснулся стены левой или правой кнопкой.
- Исключающее ИЛИ (XOR) — робот реагирует, если нажат только один датчик. Пример: если робот коснулся стены левой кнопкой, то поворачивает направо, если коснулся правой кнопкой, то поворачивает налево, если конулся обоими кнопками или не коснулся ни одной - робот продолжает движение.
- Исключение НЕ (NOT) — робот делает что‑то, если датчик НЕ нажат. Пример: робот едет, пока ни один датчик не нажат.
Логическая операция «И»
«Логическая операция И» необходима для проверки срабатывания сразу двух условий.
Пример из жизни: т ебе задали домашнее задание по русскому языку и по математике. Домашнее задание считается выполненным тогда, когда сделаны задания и по математике, и по русскому языку.
Пример из робототехники: Если у робота есть два датчика касания, то условие может быть такое: «Если нажат датчик касания 1 И нажат датчик касания 2, то остановить моторы робота». Если хотя бы один датчик не будет нажат, то в таком случае робот не остановится.
Логическая операция «ИЛИ»
Логическая операция «ИЛИ» не такая строгая: если условия два, то в этом случае необходимо, чтобы выполнилось хотя бы одно из них. При этом могут выполниться и оба условия.
Пример из жизни: ты испытываешь легкое чувство голода, на перекус есть банан или яблоко. Ты можешь съесть только банан — немного перекусить, можешь съесть яблоко — тоже немного перекусить, а можешь съесть и то и другое — хорошо перекусить.
Пример из робототехники. «Если датчик касания 1 нажат ИЛИ датчик касания 2 нажат, то робот повернет направо». В этом случае достаточно касания хотя бы одного датчика, чтобы робот повернул направо.
Логическая операция «Исключающее ИЛИ»
Логическая операция «исключающее ИЛИ» более строгая, чем логическая операция «ИЛИ» : если условий два, то в этом случае необходимо, чтобы выполнилось только одно из них: либо первое, либо второе.
Пример из жизни: В длинном коридоре установлены два переключателя, которые управляют одной лампой. Лампа горит, если один из выключателей включён, а другой выключен.
Пример из робототехники. Робот движется вперёд. При срабатывании только одного датчика он поворачивает в противоположную сторону, чтобы обойти препятствие. Если сработают оба датчика одновременно (робот упёрся в угол), он останавливается и ждёт дальнейших команд.
Логическая операция «Исключение (NOT)»
Логическая операция «Исключение (NOT)» позволяет проверить, что какое‑то событие не происходит или какое‑то состояние не выполняется.
Пример из жизни. Датчик движения в прихожей: свет в прихожей выключается, когда нет движения в течение 30 секунд (чтобы не гореть зря).
Пример из робототехники. Робот с кнопкой запуска: робот не начинает движение, пока не будет нажата кнопка запуска.
Ответь на вопросы
- Для чего нужны логические операции?
- Охарактеризуй работу логических операций «И», «ИЛИ», исключающего «ИЛИ».
- Приведи пример жизненной ситуации, которую можно описать при помощи блоков «И», «ИЛИ», исключающего «ИЛИ».
- Можно ли использовать логические блоки «И», «ИЛИ» без оператора «Переключатель»?
Подключите к контроллеру моторы и датчики касания. Проведи эксперимент с программированием касания на кнопку и блоками «И», «ИЛИ».
Возьмите моторы и два датчика касания.
Подключите моторы в порты В и С модуля EV3, а датчики касания в порты 1 и 2.
Теперь робот «видит» оба датчика.
Ответь на вопросы
- Расскажи о способе подключения датчиков касания и мотора. Влияет ли номер порта, куда они подключены, на программу?
- Можно ли реализовать проверку показаний с датчиков, не используя логические операции?
- Опиши различия между режимами «И», «ИЛИ», исключающее «ИЛИ».
- Расскажи о разнице между работой программ.
Программа, в которой при нажатии на любую из кнопок мотор вращается 3 секунды, затем останавливается.
Напишем программу, в которой при нажатии на любую из кнопок мотор вращается 3 секунды, затем останавливается.
- Блок “Начало”
- Блок “Ожидание”
- Режим “Датчик касания” - Изменить - Состояние Порт 1
- Режим “Датчик касания” - Изменить - Состояние
- Порт 1
- Блок “Ожидание” Режим “Датчик касания” - Изменить - Состояние Порт 2
- Режим “Датчик касания” - Изменить - Состояние
- Порт 2
Программа, в которой при нажатии на любую из кнопок мотор вращается 3 секунды, затем останавливается.
Чтобы робот реагировал на нажатие любого датчика касания, добавим блок «Логические операции»
- Блок «Логические операции»
- Режим « ИЛИ » Ввод « а » - от датчика 1 Ввод « b » - от датчика 2
- Режим « ИЛИ »
- Ввод « а » - от датчика 1
- Ввод « b » - от датчика 2
Программа, в которой при нажатии на любую из кнопок мотор вращается 3 секунды, затем останавливается.
Для вращения моторов добавим блок «Рулевое управление»
- Режим «Включить на количество секунд»
- Направление «Вперед»
- Мощность 50%
- Количество секунд 3 секунды
- Тормозить в конце - Истина
Загрузите программу в контроллер. Нажмите на датчик касания робота. Робот начнет движение и будет двигаться вперед со средней скоростью 3 секунды
Измени программу так, чтобы моторы включались только если обе кнопки нажаты.
Напиши программу, в которой при нажатии на любую из кнопок мотор вращается 3 секунды, затем останавливается.
- Включи контроллер и подключи его к компьютеру. Нажми на кнопку загрузки программы в контроллер.
- Дождись успешной загрузки.
- Устно опиши алгоритм работы программы.
Ответь на вопросы:
Сравни две логические операции, которые были использованы тобой в программе. Охарактеризуй процесс их работы.