Урок №4 - Вивчаємо датчик дотику

Вступ:

До складу конструктора Lego mindstorms EV3 входять різні датчики. Головне завдання датчиків - представляти інформацію із зовнішнього середовища модулю EV3, а завдання програміста - навчитися отримувати і обробляти цю інформацію, подаючи необхідні команди моторам робота. Протягом ряду уроків ми будемо послідовно знайомитися з усіма датчиками, що входять і в домашній, і в освітній набори, навчимося взаємодіяти з ними і вирішувати найбільш поширені завдання управління роботом.

4.1. Вивчаємо перший датчик - датчик дотику

Для підключення датчиків до модуля EV3 призначені порти, позначені цифрами "1" , "2" , "3" і "4" . Таким чином, до одного модулю EV3 одночасно можна підключити до чотирьох різних датчиків. Всі порти абсолютно рівнозначні і ви можете підключати датчики до будь-яких портів, головне - будьте уважні при вказівці номера порту для відповідних датчиків в ваших програмах.

Порти підключення датчиків

Мал. 1

Першим датчиком, який ми вивчимо, буде датчик дотику (Рис. 2) .

датчик дотику

Мал. 2

Цей датчик, по суті, являє собою спеціальну кнопку, яка може перебувати в двох станах: ажатіе" (Рис. 3 поз. 1) або "Звільнення" (Рис. 3 поз. 2) . Також, послідовний перехід в стан "Натискання" , а потім "Звільнення" називається: "Клацання" (Рис. 3 поз. 3) і може оброблятися програмою. як самостійну подію.

Стану датчика торкання

Мал. 3

4.2. Помаранчева палітра - Управління операторами

Які ж інструменти представляє нам середовище програмування для отримання інформації з датчиків і реагування на цю інформацію в програмі? Давайте почнемо знайомитися з програмними блоками, розташованими в Помаранчевої палітрі, яка називається "Управління операторами". (Рис. 4)

Помаранчева палітра Управління операторами

Мал. 4

Програмні блоки Помаранчевої палітри, не дивлячись на свою нечисленність, дуже важливі! За допомогою цих блоків ми можемо обробляти масу подій і умов і складно уявити практичну програму, яка може обійтися без цих блоків.

  • З найпершим блоком Помаранчевої палітри ми вже з вами знайомі: він називається "Початок" . Саме з нього починаються всі програми для роботів.
  • Друга програмна блок називається "Очікування" . Цей блок змушує програму очікувати виконання певної умови або настання якої-небудь події. Поки не виконається умова, встановлене в цьому блоці, програма не перейде до виконання наступних програмних блоків! Якщо перед тим, як почнеться виконання блоку "Очікування" були включені, будь-які мотори, то вони будуть продовжувати обертатися зі встановленою швидкістю.
  • Третій програмний блок називається "Цикл" . Цей блок багаторазово виконує програмні блоки, вкладені всередину його, поки не буде виконана умова завершення циклу, заданий в настройках блоку.
  • Наступний програмний блок називається "Перемикач" . Він служить для того, щоб в залежності від заданих умов - виконати одну послідовність програмних блоків, вкладених в один зі своїх контейнерів.
  • Заключний програмний блок називається "Переривання циклу" . Його призначення - дострокове припинення виконання заданого циклу.

Програмні блоки "Очікування" , "Цикл" і "Перемикач" мають безліч режимів і відповідних налаштувань, знайомитися з якими ми будемо на практичних прикладах, послідовно і з наочними поясненнями.

4.3. Помаранчева палітра, програмний блок "Очікування"

Перед тим, як приступити до вирішення практичних завдань, давайте закріпимо датчик торкання на нашому роботі, як показано на Рис. 5 , і підключимо його кабелем до порту "1" модуля EV3.

Установка датчика торкання на робота

Мал. 5

Завдання №6: необхідно написати програму, яка запускає рух робота по клацанню кнопки.

Рішення:

Саме умову задачі підказує нам можливе рішення: перед початком руху - необхідно дочекатися натискання-відпускання кнопки датчика торкання. Візьмемо програмний блок "Очікування" , змінимо режим програмного блоку на "Датчик дотику" - "Порівняння" (Рис. 6) .

Блок "Очікування". датчик дотику

Мал. 6

Як можна побачити - програмний блок "Очікування" змінив своє відображення! Поруч з пісочного годинника з'явилося зображення датчика торкання (Рис. 7 поз. 1) , що допомагає в програмі візуально оцінювати встановлений режим роботи. Налаштування програмного блоку "Стан" задає необхідний стан датчика, досягнення якого припинить виконання блоку "Очікування" (Рис. 7 поз. 2) . Налаштування "Стан" може набувати таких значення: "0" - "Відпущено" , "1" - "Натискання" , "2" - "Клацання" .. Висновок "Виміряне значення" (Рис. 7 поз. 3) при необхідності дозволяє передати остаточний стан датчика для обробки в інший програмний блок.

Блок очікування. Датчик дотику.

Мал. 7

Отже: при такій настройці блоку очікування виконання нашої програми буде зупинено до натискання-відпускання кнопки датчика торкання. Тільки після "Клацання" виконання буде передано наступному програмному блоку. Встановимо після блоку очікування один програмний блок "Рульове управління" , завантажимо програму в робота і переконаємося в правильності її виконання! (Рис. 8)

Рішення завдання 6

Мал. 8

Завдання №7: необхідно написати програму, що зупиняє робота, що зіткнувся з перешкодою.

З датчика торкання давайте зберемо невеликий бампер, який буде нам сигналізувати про те, що наш робот зіткнувся з перешкодою. Нижче наведені докладні інструкції для складання, як з домашньої, так і з освітньої версії конструктора Lego mindstorms EV3. Можете поекспериментувати і придумати власний варіант конструкції.

Lego mindstorms EV3 home

Інструкція по збірці для домашньої версії конструктора

Lego mindstorms EV3 education

Інструкція по збірці для освітньої версії конструктора

Одержаний елемент закріпимо на передній балці нашого робота і з'єднаємо датчик дотику з портом "1"модуля EV3.

  Lego mindstorms EV3 Home Lego mindstorms EV3 Education
Розміщення на домашній версії набору Розміщення на освітньої версії набору

Конструкція готова! Приступимо до створення програми. За умовою завдання: робот повинен рухатися вперед, поки не наткнеться на перешкоду. В цьому випадку датчик дотику буде натиснуто! Для вирішення знову скористаємося програмним блоком "Очікування" .

Рішення:

  1. Почати прямолінійний рух вперед (Рис. 9 поз. 1) .
  2. Чекати, поки датчик дотику і не натискати (Рис. 9 поз. 2) .
  3. Припинити рух вперед (Рис. 9 поз. 3) .

Рішення завдання 7

Мал. 9

Для вирішення наступного завдання нам знадобиться програмний блок "Цикл" Помаранчевої палітри.

Завдання №8: необхідно написати програму, яка змушує робота рухатися вперед, при наїзді на перешкоду - від'їжджати назад, повертати вправо на 90 градусів і продовжувати рух вперед до наступного перешкоди.

Підказка: напишіть і протестуйте програму руху - від'їзду - повороту , а потім помістіть ці блоки всередину програмного блоку "Цикл" .

 

Рішення Завдання №8

 

  1. Включаємо мотори для прямолінійного руху вперед (Рис. 10 поз.1)
  2. Очікуємо натискання датчика торкання (Рис. 10 поз.2)
  3. Вимикаємо мотори (Рис. 10 поз.3)
  4. Від'їжджаємо трохи назад (Рис. 10 поз.4)
  5. Розраховуємо значення параметра для повороту робота вправо на 90 градусів (діаметр коліс робота дорівнює 56 мм (освітня версія конструктора)) (Рис. 10 поз.5)
  6. Повертаємо вправо на 90 градусів (Рис. 10 поз.6)
  7. Пункти 1 - 6 повторюємо в нескінченному циклі (Рис. 10 поз.7)

Рішення завдання 8

Мал. 10

Категорія: Уроки з LEGO | Додав: admin (05.07.2018)
Переглядів: 922 | Теги: Lego mindstorms EV3 | Рейтинг: 0.0/0
Всього коментарів: 0
Додавати коментарі можуть лише зареєстровані користувачі.
[ Реєстрація | Вхід ]