- Датчик кольору (Color Sensor)
- Робота в режимі визначення кольору
- Робота в режимі вимірювання освітленості
Анотація: Мета: вивчити засоби для отримання роботом інформації з навколишнього світу.
Поведінка робота - це низка змінюють один одного станів (стан руху, стан пошуку і т. П.). Зміна станів відбувається в залежності від зовнішніх подій. Робот реєструє події за допомогою різних датчиків. Все поведінку робота можна схематично зобразити у вигляді діаграми переходів між станами.
Приклад 3.1. Діаграма переходів "Стан 1 → Подія → Стан 2" відповідна руху робота до чорної лінії ( Мал. 3.1 ):
- Робот знаходиться в стані руху.
- Датчик світла реєструє зниження яскравості до деякого порогового значення - це нове подія, яку можна назвати "робот доїхав до чорної лінії".
- В результаті реєстрації події робот змінює свій стан на бездіяльність (зупинка).
Таким чином, можна сказати, що робот повинен весь час чекати виникнення подій. Для цього в середовищі NXT-G є спеціальний блок Wait (Чекати):
Мал.3.2.
Варіанти блоку Wait в загальній палітрі
Джерелами подій можуть бути:
- різні датчики (сенсори): кольору, освітленості, торкання, і ін .;
- таймер;
- кнопки NXT-блоку;
- повідомлення від інших роботів, передані по Bluetooth з'єднанню.
Далі в цій темі ми розглянемо роботу з деякими найбільш часто використовуваними датчиками.
Датчик кольору (Color Sensor)
Датчик кольору (RGB-датчик) поєднує три функції:
- Дозволяє роботу розрізняти кольори.
- Дозволяє роботу розрізняти рівень освітленості шляхом вимірювання яскравості відбитого світла.
- Колірна підсвічування.
Робота в режимі визначення кольору
Приклад 3.2. Очікування події від датчика кольору.
Робот рухається по тестовому полю вперед до тих пір, поки не зареєструє синій колір.
Раніше в темі "Програмування моторів: команда Move" ми відзначили, що параметр Unlimited (обмеження немає) в настройках блоку Move дозволяє роботу рухатися без будь-яких обмежень до настання чергового події. Після цього можна змінити стан робота. Зміна стану не відбувається автоматично: його треба запрограмувати! У нашому прикладі після настання події (реєстрація датчиком синього кольору) запрограмована зупинка моторів B і C.
Зверніть увагу:
- поле Until треба читати по-російськи [Антил], а переводити в такий спосіб: "до тих пір поки не стане ...";
- в поле Until можливий один з двох варіантів:
- Inside Range (Всередині діапазону) - очікується подія "попадання реєстрованого кольору всередину зазначеного діапазону кольорів";
- Outside Range (Поза діапазону) - очікується подія "попадання реєстрованого кольору зовні зазначеного діапазону кольорів";
- колір в полі Until задається за допомогою двох слайдерів.
Завдання 3.1. Протестуйте датчик кольору:
- Додайте в конструкцію робота Five Minute Bot датчик кольору, розташований попереду і спрямований вниз, на висоті приблизно 1 - 1,5 см від поверхні підлоги (стола).
- Додайте на поле програми блок Wait Color Sensor і протестуйте його на предметах різних кольорів:
- Підключіть блок NXT до комп'ютера через USB-з'єднання.
- Виділіть блок Wait і натисніть на кнопку Download and run selected контролера NXT ( Мал. 3.4 ).
- Чи не отсоединяя USB-шнур, тримайте предмети різного забарвлення до датчика на відстань приблизно 1 см.
- Слідкуйте за результатом в поле зворотного зв'язку панелі налаштувань датчика (лівий нижній кут панелі налаштувань).
- Проведіть ті ж тести за допомогою меню View NXT. Чи збігаються результати тестів?
Мал.3.4.
Компіляція і виконання виділеного фрагмента
Завдання 3.2. Напишіть програму для руху робота по тестової полосе1 до виявлення червоного (синього, зеленого і ін.) Кольору. Після того, як заданий колір виявлений, робот повинен вимовити цей колір.
Завдання 3.3. Напишіть програму для руху робота по тестовій смузі до виявлення синього або зеленого кольору. Перевірте роботу програми, запускаючи робот з різних сторін тестової смуги.
Робота в режимі вимірювання освітленості
Датчик кольору з нашого набору може працювати в двох режимах: власне датчик кольору, і датчик світла, що вимірює освітленість. Переведіть в настройках блоку Wait Color Sensor датчик кольору в режим датчика освітленості. Для цього в поле Action виберіть Light Sensor ( Мал. 3.5 ). Зверніть увагу, що зовнішній вигляд блоку Wait змінився.
Мал.3.5.
Налаштування блоку Wait Color Sensor в режимі вимірювання освітленості
Щоб краще уявити собі, що "бачить" датчик освітленості, уявіть, що він переміщається над чорно-білою фотографією. Результатом вимірювання буде яскравість в діапазоні від 0 (чорний колір) до 100 (білий колір), хоча крайніх значень на практиці зафіксувати не вдається.
Зверніть увагу:
- рівень освітленості в поле Until задається за допомогою слайдера або введенням числового значення;
- знак в очікувану подію перемикається клацанням по яскравому або темному "сонечка" (за замовчуванням стоїть знак ">");
- поле Until читається: "до тих пір поки освітленість не стане ...". Так, на Мал. 3.5 очікується подія "рівень освітленості> 50", що означає виконання дії, що передує блоку Wait до тих пір, поки освітленість не стане> 50;
- поле Function дозволяє використовувати датчик кольору в якості лампи червоного, зеленого або синього світла (включений прапорець Light). Вимірюючи інтенсивність відбитого від поверхні світла можна оцінити її яскравість: від світлої поверхні відіб'ється більше світла, ніж від темної. Взагалі кажучи, якщо виміри освітленості відбуваються при хорошому денному світлі, то підсвічування можна вимкнути (зняти прапорець Light). Однак виробник рекомендує в режимі вимірювання освітленості використовувати червоне підсвічування. Також при вимкненому світлі можна вимірювати загальну освітленість в навколишньому просторі.
Завдання 3.4. Протестуйте роботу датчика кольору в режимі вимірювання освітленості на предметах різних кольорів так само, як робили в попередньому завданні:
- Випишіть значення освітленості, які датчик показує для чорного, синього, блакитного, жовтого, зеленого, червоного і чорного кольорів на тестовому поле.
- Використовуйте в якості підсвічування лампи різних кольорів. Як змінюються показання датчика?
- Вимкніть підсвічування і порівняйте свідчення датчика з підсвічуванням і без неї.
- Експериментуйте з навколишніми предметами.
Завдання 3.5. Використовуючи RGB-датчик в режимі вимірювання освітленості, напишіть програму для руху робота по білому полю до виявлення чорного кольору. Для цього в поле Until вкажіть необхідний поріг чорного кольору. Після зупинки робот повинен вивести на екран відповідну інформацію (наприклад, "Black color found!").
Чи збігаються результати тестів?Як змінюються показання датчика?