Датчик освещенности лего nxt
Навеяно чтением книги "Lego Mindstorms NXT-G Programming Guide"
Когда мы программируем реакцию робота на изменение показаний у сенсоров освещенности и звука, нам приходится сталкиваться с тем, что минимальные и максимальные показания этих двух сенсоров различаются при различной окружающей обстановке. Например, если ваш робот находится в хорошо освещенной комнате, минимальное показание сенсора освещенности (наиболее темное место в комнате) будет значительно отличаться от минимального показания сенсора в плохоосвещенной комнате.
- Каждый раз когда наша окружающая обстановка меняется, мы измеряем новые показания сенсоров звука и освещенности и меняем программу, так чтобы отразить новые условия. Этот процесс долгий, к тому же многие части программы нам придется тестировать и отлаживать заново.
- Для каждой новой окружающей обстановки мы производим настройку сенсоров или их калибровку. Таким образом, если в нашей программе мы раз установили значение для самого темного участка в 20%, то в новой окружающей обстановке, после калибровки, темное место опять будет отображаться как 20% - программу изменять и на заново тестировать не придется.
Еще одна особенность блока Calibrate в том, что если к блоку NXT подключено несколько однотипных сенсоров (например, три сенсора освещенности), использование двух блоков калибровки для одного из них, приведет к тому, что они автоматически применятся к другим сенсорам этого типа.
Давайте рассмотрим использование же блока Calibrate в программе:
1. Отдельная программа для калибровки сенсоров.
Программа выставит минимальное значение во время первого нажатия на датчик касания и выставит максимальное значение во время второго нажатия.
Чтобы воспользоваться программой, отнесите робота сначала в самое тихое место в вашем текущем окружении, нажмите датчик касания, затем, отнесите его в самое шумное место, создайте дополнительный шум, который вы собираетесь потом обрабатывать в программе (хлопок, звуковой сигнал, свист) и нажмите датчик касания еще раз.
При использовании сенсора звука после калибровки, необходимо учитывать, что моторы робота тоже будут создавать шум во время движения. С этим необходимо считаться, иначе робот никогда не сможет среагировать на маленькие значения громкости звука, поскольку моторы будут создавать довольно ощутимый звуковой фон.
2. Калибровка сенсора перед запуском основного алгоритма.
Такое использование блока Calibrate может быть в тех случаях, когда нужно, чтобы робот произвел калибровку самомстоятельно непосредственно перед выполнением основного задания.
Например, робот прежде чем двигаться вдоль черной линии, сначала находит самый светлый участок и калибрует его как максимум, затем находит самый темный участок и калибрует его как минимум.
Программа ниже демонстрирует идею как можно откалибровать максимальное значение сенсора освещенности перед движением робота по черной линии. Программа подразумевает, что перед ее запуском, робот поставлен на линию или около нее, так что сенсор робота пройдет над лининей во время "калибрующего" поворота вокруг своей оси.
Сообщить о поступлении
Оставьте e-mail и мы свяжемся с Вами для
оформления заказа в ближайшее время
Нас рекомендует производитель Вы можете убедиться в этом,
скачав официальное письмо
Оплата 30/70 или полная постоплата (по 44-ФЗ)
Подготовка коммерческих предложений
Разработка технического задания
Широкий выбор способов доставки
Оплата при получении для физических лиц
Характеристики
Артикул | 9844 |
Страна | Дания |
Размеры (см.) | 15x11x5 см |
Количество элементов | 1 |
Производитель | LEGO Education |
Вес | 0.1 кг |
Описание
С помощью этого датчика робот способен отличать свет от темноты настолько хорошо, насколько позволяет освещение в комнате. Датчик может по яркости отраженного света различать цвета (градация по шкале серого).
Датчик освещенности LEGO 9844
С помощью этого датчика робот способен отличать свет от темноты настолько хорошо, насколько позволяет освещение в комнате. Датчик может по яркости отраженного света различать цвета (градация по шкале серого).
Подпишись
Контакты
123022 г. Москва , ул. 2-я Звенигородская, д. 13, стр. 15,
Юр. адресс: 111397, г. Москва, Федеративный пр-кт, д. 4, кв. 47 офис XI
Мы работаем: c 09:00 до 18:00
LEGO, логотип LEGO, Minifigure (Минифигурка), DUPLO и MINDSTORMS являются торговыми марками и/или охраняемой авторским правом собственностью LEGO Group.
©2022 The LEGO Group. Все права защищены. Использование этого вебсайта подтверждает ваше согласие с этим.
Сообщить о поступлении
Оставьте e-mail и мы свяжемся с Вами для
оформления заказа в ближайшее время
Нас рекомендует производитель Вы можете убедиться в этом,
скачав официальное письмо
Оплата 30/70 или полная постоплата (по 44-ФЗ)
Подготовка коммерческих предложений
Разработка технического задания
Широкий выбор способов доставки
Оплата при получении для физических лиц
Характеристики
Артикул | 9694 |
Страна | Дания |
Размеры (см.) | 11x14x1 см |
Возраст | 8+ |
Количество элементов | 1 |
Производитель | LEGO Education |
Вес | 0.1 кг |
Описание
При использовании с блоком NXT датчик света выполняет три уникальных функции. Он может работать как датчик цвета и распознавать шесть цветов, быть датчиком света, определяющим интенсивность освещения, и регистрировать его уровень, а также выполнять функции цветной лампы красного, зеленого и синего цветов.
Датчик цвета для микрокомпьютера NXT LEGO 9694
При использовании с блоком NXT датчик света выполняет три уникальных функции. Он может работать как датчик цвета и распознавать шесть цветов, быть датчиком света, определяющим интенсивность освещения, и регистрировать его уровень, а также выполнять функции цветной лампы красного, зеленого и синего цветов.
Подпишись
Контакты
123022 г. Москва , ул. 2-я Звенигородская, д. 13, стр. 15,
Юр. адресс: 111397, г. Москва, Федеративный пр-кт, д. 4, кв. 47 офис XI
Мы работаем: c 09:00 до 18:00
LEGO, логотип LEGO, Minifigure (Минифигурка), DUPLO и MINDSTORMS являются торговыми марками и/или охраняемой авторским правом собственностью LEGO Group.
©2022 The LEGO Group. Все права защищены. Использование этого вебсайта подтверждает ваше согласие с этим.
Разумеется вы можете подключить сенсоры к модулю NXT чтобы робот реагировал на внешние события. Перед тем как я покажу вам, как это сделать, мы должны немного модифицировать робота, добавив ему сенсор касания. Как и ранее, используйте инструкцию по сборке Tribot'а для сборки переднего бампера.
Соедините полученный сенсор касания со входом 1 на модулей NXT.
Ждём информацию с сенсора
Давайте начнем с простой программы по которой робот будет ехать вперед, пока не коснётся чего-нибудь. Вот её текст:
В этой программе две строки для нас особо интересны. Первая строка программы указывает роботу какой тип сенсора мы используем. IN_1 это номер входа, к которому подключен сенсор. Другие входы для сенсоров имеют названия IN_2, IN_3 и IN_4. Идентификатор SENSOR_TOUCH показывает что это сенсор касания. Для датчика света мы будем использовать SENSOR_LIGHT. После того как мы указали тип сенсора и куда он подключен, программа включает оба мотора и робот начинает ехать вперед. Следующий оператор очень полезен. Он ожидает пока условие внутри его круглых скобок не станет истинным. Указанное там условие говорит что значение сенсора SENSOR_1 должно быть равно 1, что означает, что сенсор нажат. Пока сенсор не будет нажат, значение сенсора будет 0. Таким образом этот оператор ждёт нажатия сенсора. После чего оба мотора выключаются и задача считается завершенной.
Действия при срабатывании сенсора касания
Давайте теперь попытаемся сделать так, чтобы робот избегал препятствия. Когда робот будет сталкиваться с препятствием, мы сделаем чтобы он отъезжал немного назад, поворачивался и продолжал движение. Вот программа, которая это реализует:
Как и в предыдущем примере, мы сначала определяем тип сенсора, затем робот начинает ехать вперед, а дальше в бесконечном цикле мы постоянно проверяем не оказался ли нажатым контактный сенсор, и если это так - движемся назад 0.3 секунды, поворачиваем направо в течение 0.3 секунд и затем продолжаем движение вперед.
Сенсор освещенности
Кроме датчика касания, у вас в Mindstorms NXT также имеется датчик освещенности, датчик звука и цифровой ультразвуковой дальномер. Датчик освещенности может быть настроен на излучение света или только на приём света. Таким образом мы можем измерять отраженный свет или просто уровень освещенности с какого-то направления. Измерение отраженного света полезно когда мы строим робота, который будет ездить по линии нанесённой на пол. Именно это мы и будем делать в следующем примере. А теперь, чтобы продолжить наши эксперименты, нужно достроить Tribot'a. Соедините датчик освещенности с входом 3, датчик звука ко входу 2 и ультразвуковой дальномер ко входу 4, как указано в инструкции.
Кроме того нам потребуется тестовая поверхность с черной линией, которая идёт в комплекте с NXT. Простейший принцип отслеживания линии заключается в том, что робот пытается держаться датчиком освещенности по правой границе черной линии, поворот правее сделает уровень отраженного света слишком высоким, а поворот левее слишком низким. Вот простая программа, под управлением которой робот может следовать по линии с одним датчиком освещенности.
Программа сначала объявляет порт 3 датчиком освещенности. Затем робот включается на движение вперед и запускается бесконечный цикл. В нём, если уровень освещенности больше чем 40 (мы использовали константу, чтобы можно было удобно настраивать робота, так как наш метод отслеживания линии сильно зависит от уровня освещенности помещения, где проводится эксперимент) мы включаем один из моторов в режим обратного хода пока снова не вернемся на линию.
Как можно увидеть из выполнения программы - движение робота не очень плавные. Попробуйте добавить Wait(100); перед оператором until, чтобы немного улучшить движение робота. Обратите внимание, что программа не работает для движения против часовой стрелки. Чтобы можно было двигаться по любому направлению линии потребуется другая, более сложная, программа.
Чтобы получить уровень отраженного освещения с выключенным светодиодом подсветки, настройте сенсор следующим образом:
Звуковой сенсор
Используя звуковой сенсор вы можете превратить свой дорогостоящий набор NXT в "выключатель по хлопку"! Мы напишем программу, которая ждёт громкого звука, после чего включает робота на движение вперед, пока не услышит еще один громкий звук. Не забудьте проверить подключение звукового сенсора к порту 2, как указано в инструкции по сборке Tribot'a.
Сначала мы определяем константу уровня звука с которого мы будем считать его громким - THRESHOLD и псевдоним для SENSOR_2; в самой задаче мы настраиваем порт 2 на чтение данных со звукового сенсора и запускаем бесконечный цикл.
Используя оператор until программа ждёт уровня звука который будет больше чем объявленный в THRESHOLD: обратите внимание, что SENSOR_2 это не просто имя, а функция, которая возвращает уровень звука замеренный сенсором.
Если будет обнаружен громкий звук робот начнёт движение вперед, пока еще один громкий звук не остановит его.
Операторы wait были добавлены в программу потому что иначе робот будет запускаться и тут же останавливаться: на самом деле NXT настолько быстр, что у него практически не занимает времени выполнение программы между двумя операторами until. Пожалуй, если вы попробуете закомментировать оба оператора wait, вы лучше поймёте о чем идёт речь. Альтернативой использованию оператора until для ожидания событий может быть оператор while. Достаточно поместить в его круглые скобки соответствующее условие, например
На самом деле не так много нужно помнить про аналоговые сенсоры из набора NXT; просто не забывайте, что оба датчика - освещенности и звуковой возвращают вам число от 0 до 100.
Ультразвуковой дальномер
Ультразвуковой дальномер работает как сонар. Излучая громкий звук он посылает пачку ультразвуковых волн и замеряет время, которое потребовалось им, чтобы отразиться от объектов в поле зрения и вернуться к датчику. Это цифровой сенсор, что означает, что в него встроено устройство для анализа и обработки данных. С этим сенсором вы можете построить робота, который будет избегать препятствий, а не обнаруживать их путём столкновения (как это приходилось делать с датчиком касания).
Программа объявляет порт 4 для чтения данных с ультразвукового дальномера, запускает бесконечный цикл в котором робот едет прямо, пока не обнаружит препятствие ближе чем NEAR сантиметров (15см в нашем случае), после этого он отъезжает и отворачивает немного и снова пытается ехать прямо.
Подводим итоги
В этой главе вы ознакомились с тем, как работать со всеми видами датчиков включенных в набор NXT. Мы также увидели, как полезны операторы while и until при работе с сенсорами.
Я рекомендую вам попробовать самостоятельно написать несколько программ до перехода к следующей главе. Теперь у вас есть все компоненты, чтобы ваш робот показывал достаточно сложное поведение: попробуйте адаптировать под NXC простейшие программы из "Robo Center programming guide", поставляемого с набором.
Целью работы является научить обучающихся составлению программ с использованием светового датчика.
Световой датчик NXT (LightSensor) – это бесконтактный выключатель. Можно использовать как для оценивания уровня освещенности, так и для различения цветов.
Блок «Датчик освещенности» предназначен для управления работой лампы (рис. 1).
Рис. 1. Блок «Датчик освещенности»
Блок «Датчик освещенности» фиксирует рассеянный свет. С помощью шины данных он может передать текущее значение освещенности или логический сигнал (истина, ложь).
Рассмотрим Блок «Ламп». Лампа (рис. 2) подключается к NXT при помощи перходного кабеля.
Рис. 2. Блок «Лампа»
Пикторгамма 1 указывает на порт NXT, к которому подключена лампа. Пиктограмма 2 показывает на состояние On или Off блока «Лампа». Пиктограмма 3 указывает на состояние яркости лампы. Число полосок от 0 до 4, которые свидетельствуют об уровне яркости. Пиктограмма 4. Концентратор данных блока «Лампа» используется для изменения свойств этого блока с помощью шин данных других блоков (рассмотрим в следующих работах).
О калибровке датчика освещенности. Действия перед использованием функции «Калибровка датчиков»:
- подключить NXT к компьютеру;
- подключить датчик «Освещенность» к NXT;
- проверить подключение датчика к соответствующему порту.
Для калибровки датчика «Освещенность» запустим из меню
комбинацию команд Инструменты-Калибровка (рис. 3). В появившемся окне «Калибровка датчиков» нажать на кнопку «Калибровать».
На NXT запустится программа калибровки. Затем помещая датчик в условие минимальной освещенности (например, прикрывая датчик рукой) определим минимальное значение освещенности в нашем эксперименте, а также в условиях максимальной освещенности определим максимальное значение.
Рис. 3. Результат калибровки датчика освещенности
При этом, нажимая на NXT кнопку Еnter, зафиксируем минимальное и максимальное значения освещенности, после чего на ПК нажать на кнопку «Обновить». В нашем случае минимальное значение освещенности было равно 431, максимальное – 676.
Составим программу работы датчика освещенности и лампы (рис. 4).
При освещенности больше 50 % принимает значение «истина», т.е. выполняется верхняя часть блока «Переключатель». В нашем случае, когда перед датчиком освещенности ставим предмет, который уменьшает уровень освещенности, лампа должна погаснуть, т.е. выполняется нижняя часть блока «Переключатель».
При этом надо учесть следующую настройку для лампы из верхней части блока «Переключатель», (рис. 5)
Настройка лампы в нижней части блока «Переключатель» на рис. 6.
Рис. 4. Программа работы лампы
Рис. 5. Настройка лампы для верхней части блока «Переключатель»
Рис. 6. Настройка лампы для нижней части блока «Переключатель»
По ходу изучения данной рекомендации, обучающимся предлагается задание для самостоятельной работы: Меняя яркость в настройках блока «Лампа», посмотреть влияние этого изменения на работу программы.
Читайте также: