Меню

Ev3 basic датчик цвета

Датчик цвета Lego EV3

Датчик цвета

Датчик цвета Lego EV3 позволяет расширить возможности робота. Чтобы робот выполнял более сложные действия нужно научить робота видеть. Человек более восемьдесят процентов информации получает при помощи зрения.

При этом в обработке полученной информации принимает участие более тридцати процентов коры головного мозга. Это говорит о большой значимости визуальной информации. Поэтому научить робота использовать для обработки информации датчик цвета или освещенности является важной задачей. Датчик цвета Lego EV3 это отдаленный аналог глаза, пока еще очень несовершенный.

датчик цвета

Датчик цвета является цифровым датчиком.

На лицевой панели датчика расположено небольшое окошко, в которое поступает свет. Сенсор определяет яркость отраженного света или цвет. Оптимальное расстояние, на котором датчиком корректно могут быть определены цвет или яркость отраженного света около 1 сантиметра.

Имеется три разных режима в которых может работать датчик:

  1. Цвет
  2. Яркость отраженного света
  3. Яркость внешнего освещения.

Режим «Цвет»

Режим «Цвет» позволяет датчику определить цвет находящегося перед ним предмета.

режим «Цвет»

Датчик цвета умеет определять семь различных цветов: черный, синий, зеленый, желтый, красный, белый и коричневый цвета. Также если цвет определяется некорректно если предмет назодится далеко от датчика. Датчик определяет отсутствие цвета и приходит в состояние «без цвета».

Режим «Яркость отраженного света»

В этом режиме датчик направляет световой луч от светодиода на расположенный перед ним предмет и определяет яркость предмета по пучку отраженного света.

Светодиод расположен на лицевой (передней) панели сенсора. Если выбран режим яркость отраженного света, то светодиодом излучается красный свет. Датчик использует в работе шкалу от 0 до 100. Ноль значит очень темный, а 100 означает очень светлый.

Режим «Яркость внешнего освещения»

Такой режим позволяет датчику определить насколько ярко освещено оружающее пространство. Датчик цвета может определяеть силу света, который проникает в окошко из внешней среды. Это может быть солнечный свет, луч фонарика или освещение улиц. Сенсор также применяет шкалу от 0 до 100.

яркость внешнего освещения

Для того, чтобы датчик работал наиболее точно в режимах «Цвет» или «Яркость отраженного света», нужно располагать датчик цвета под правильным углом приблизительно в 90 градусов. Исследуемой поверхность должна быть близко, но датчик не должен ее касаться. Расстояние должно приблизительно 1 сантиметр от поверхности. На расстоянии менее 1 сантиметра и более 3 сантиметров датчик уже дает не совсем точные показания.

Работает датчик с частотой дискретизации 1 килогерц. Как и все датчики EV3, датчик цвета подключается к портам ввода программируемого модуля EV3 1, 2, 3 и 4 при помощи плоского соединительного кабеля. По умолчанию датчик цвета подключается к порту ввода номер 3. Если модуль EV3 подключен к компьютеру, то программное обеспечение автоматически определит в какой порт включен датчик.

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

Датчик цвета Lego EV3 часто используется на занятиях, а также на различных соревнованиях, таких как «Сумо роботов», «Кегельринг», «Движение по линии» и многих других.

В быту и промышленности датчики освещенности применяется для автоматизации освещения улиц, управления различными источниками света. То есть датчик освещенности представляет из себя выключатель, который работает в режиме автоматики.

схема подключения датчика освещения

Датчик автоматически включает и отключает свет, когда достигается определенная степень освещенности в месте его установки. Датчики устанавливаются в тех местах, где в дневное время суток пространство освещено естественным светом, а когда наступает темное время суток – электрическим. Это могут быть подъезды жилых домов, заезды в гаражи, тротуары, дороги, магазинные витрины и т.д.

Датчики цвета, например, могут определять загрязнение пряжи в текстильной и легкой промышленности. Они устанавливаются в поточной линии передвижения пряжи.

производство пряжи

Изменение цвета пряжи указывает на ее загрязнение. Когда загрязнение определено, то автоматическая система управления процессом останавливает линию. Это позволяет сократить или полностью исключить вероятность человеческого фактора у уменьшить ошибки при работе. За счет этого повышается точность, и промывка пряжи становиться более эффективной.

Также датчики цвета могут помогать проводить химический анализ. Несколько датчиков цвета помещаются вдоль зоны где происходит химическая реакция.

химическая реакция

По цвету отслеживается стадия на которой находится реакция. Датчики цвета применяются во многих областях и диапазон их применения постоянно расширяется.

Датчик цвета (освещенности) Lego EV3

Источник

Датчик Цвета LEGO® Mindstorms® EV3

датчик цвета

Датчик цвета — это цифровой датчик, который может определять цвет или яркость света, поступающего в небольшое окошко на лицевой стороне датчика . Этот датчик может работать в трех разных режимах: в режиме «Цвет», в режиме «Яркость отраженного света» и в режиме «Яркость внешнего освещения» .

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

В режиме «яркость отраженного света» датчик цвета определяет яркость света, отраженного света светодиода датчика излучающего красный свет . Датчик использует шкалу от 0 (очень темный) до 100 (очень светлый) . Это означает, что ваш робот может быть запрограммирован таким образом, чтобы он двигался по белой поверхности до тех пор, пока не будет обнаружена черная линия, или чтобы он интерпретировал идентификационную карточку с цветовым кодом.

В режиме«яркость внешнего освещения» датчик цвета определяет силу света, входящего в окошко из окружающей среды, например солнечного света или луча фонарика . Датчик использует шкалу от 0 (очень темный) до 100 (очень светлый) . Это означает, что ваш робот может быть запрограммирован таким образом, чтобы он подавал сигнал утром, когда восходит солнце, или чтобы он прекращал действие, если свет гаснет .

Режим «яркость отраженного света»

Источник

Ev3 basic датчик цвета

Many Thanks to Андрей Степанов ( Andrey Stepanov) for translating the manual into Russian. Visit Andrey’s site about Robotics (Mindstorms, Arduino, etc.) HERE.

Язык программирования EV3 Basic .

Краткий перевод официального руководства

I. Экран, кнопки на блоке, подсветка блока, динамик

EV 3 имеет черно-белый экран с разрешением 178 x 128 пикселей. Левый верхний угол экран имеет координаты (0,0), правый нижний (178,128).

Для работы с экраном EV 3 Бейсик имеет следующие команды:

LCD . BmpFile (цвет, x , y , имя_файла) выводит к заданных координатах картинку из файла RGF . Может содержать путь к файлу. Файл можно создать в официальном ПО от LEGO.

LCD . Clear () Очищает экран

LCD . Circle (цвет, x , y , радиус) Рисует круг заданного радиуса к указанных координатах

LCD . FillCircle (цвет, x , y , радиус) Рисует закрашенный круг заданного радиуса к указанных координатах

LCD . Rect (цвет, x , y , ширина, высота) Рисует прямоугольник заданных размеров к указанных координатах

LCD . FillRect (цвет, x , y , ширина, высота) Рисует закрашенный прямоугольник заданных размеров к указанных координатах

LCD . InverseRect ( x , y , ширина, высота) Инвертирует (меняет на противоположный) цвет пикселей в указанной прямоугольной области

LCD . Line (цвет, x 1, y 1, x 2, y 2) Рисует линию из точки x 1, y 1 в точку x 2, y 2

LCD . Pixel (цвет, x , y ) Закрашивает пиксель указанным цветом

LCD . Text (цвет, x , y , размер, «текст») Пишет текст заданного размера и цвета в указанной позиции

LCD . Write ( x , y , «текст») Пишет текст среднего размера в позиции x , y

LCD . StopUpdate () Перестает обновлять экран до вызова LCD . Update , накапливая изменения

LCD . Update () Выводит все накопленные изменения после LCD . StopUpdate на экран

Программирование традиционно начинают с вывода Hello, World !

LCD . write (45,60,» Hello World «) ‘ печатаем начиная с точки (45,60) на экране

Читайте также:  Ваз 2110 сколько датчиков кислорода

Program . Delay (10000) ‘ ждем 10 секунд прежде чем завершить программу

Команда LCD . write печатает текст всегда среднего размера, чтобы напечатать текст меньшего 0, среднего 1 или большого 2 размера изменив в программе оператор на LCD . text

LCD . text (1,0,55,2,» Hello World «) ‘1=черный цвет, пишем начиная с (0,55), 2=размер

Program . Delay (10000) ‘ждем чтобы успеть рассмотреть результат

Размер 1 и 0 одинаков, но 1 – более жирный. Размер 0 очень мелкий, трудно рассмотреть текст, зато можно уместить 22 символа в строке и около 10 строк на экране при размере символа 12 пикселей по высоте. Большой шрифт имеет символы в высоту около 20 пикселей, в строке умещается 11 символов и строк может быть до 6. Если Вам нужно напечатать несколько строк текста, хорошая идея выключить обновление экрана функцией LCD . StopUpdate , напечатать текст, затем включить обновление функцией LCD . Update выведя весь текст за раз.

Блок EV3 имеет 6 кнопок, но только 5 из них может использовать EV 3 Бейсик. Шестая кнопка (Назад) завершает выполняющуюся программу. Кнопки обозначаются так: Вверх ( U ), Вниз ( D ), Влево ( L ), Вправо ( R ) и Ввод ( E ). Для работы с кнопками имеются следующие команды:

Buttons . Current Возвращает коды кнопок в моменты, когда они нажаты. Например, если вызвать функция в момент, когда Вы удерживаете Влево и Вверх, то функция выдаст строку » LU «.

Buttons . Wait () waits Ждет, пока одна из кнопок не будет нажата и отпущена.

Buttons . GetClicks () Проверяет, какие кнопки были нажали с момента последнего вызова GetClicks и возвращает строку, с их перечислением

Buttons . Flush () Удаляет из памяти состояния всех кнопок. Последующие вызовы GetClicks выдаст только кнопки, которые были нажаты после вызова этой функции.

Следующая программа ждет нажатия кнопок и выводит на экран соответствующие им символы

EV 3 блок имеет подсветку, расположенную под кнопками. Она может загораться зеленым, красным и оранжевым цветом. Есть всего лишь одна команда для управления подсветкой на блоке

EV 3. SetLEDColor (Цвет, Эффект) Управляет подсветкой и ее режимом

Цвет может быть » OFF » (выключена), » GREEN » (зеленый), » RED » (красный) or » ORANGE » (оранжевый).

Эффект может быть » NORMAL » (горит постоянно), » FLASH » (вспыхивает) or » PULSE » (пульсирует).

В EV 3 Бейсик есть ряд команд для работы с динамиком. По умолчанию при вызове команды, проигрывающей звук программа продолжается и не ждем, пока проигрывание закончится. Чтобы дождаться проигрывания воспользуйтесь командой : Speaker.Wait().

Speaker . Tone (громкость, частота, длительность) Проигрывает тон указанной частоты. Громкость 0-100, частота в герцах 250-10000. Длительность в миллисекундах .

Speaker . Note (громкость, нота, длительность) Тоже самое, что и предыдущая, но воспроизводит ноту, от ДО 4 октавы » C 4″ to СИ седьмой » B 7″ и полутона в форме » C #5″.

Speaker . Play (громкость, имя_файла) Проигрывает звуковой файл формата RSF , имеющийся на блоке. Может содержать путь к файлу. Файл можно создать в официальном ПО от LEGO.

Speaker . Stop () останавливает проигрывающийся звук, файл или тон.

Speaker . Wait () Ждет, пока текущий проигрывающийся звук не закончится.

Пример программы по главам 1-4. Вы можете скопировать ее в EV 3 Basic и запустить, подключив блок EV3. Чтобы программа автоматически красиво отформатировалась Щелкните на код правой кнопкой мыши и выберите «Format Program» .

LCD.Write(15,55, «Press buttons other»)

‘Проверяем пять раз в секунду какие кнопки нажаты

click = Buttons . GetClicks () ‘переменная ‘ click ‘ содержит символы

‘кнопок, нажатых и отпущенных с момент последнего вызова этой функции

If click <> «» Then ‘Очищаем экран если кнопка нажата

If Text.IsSubText(click, «U») Then ‘ Если в строке есть символ «U» ( Вверх )

LCD.Write(0,0, «This is written at»)

LCD.Write(0,10, «(0,0) using LED.Write»)

EV3.SetLEDColor («OFF», «Normal»)

Speaker . Tone (100, 500, 400)

‘Играем 500 Гц тон 0.4 секунды на полной громкости

ElseIf Text.IsSubText(click,»D») Then

LCD.Text(1, 0,12, 0, «This is written at»)

LCD.Text(1, 0,24, 0, «(0,12) using LED.Text»)

LCD.Text(1, 0,36, 0, «in size 0 (small).»)

Speaker . Note (50, « D 2″, 400) ‘Играем ноту» D 2″ 0.4 секунды на 50% громкости

ElseIf Text.IsSubText(click,»L») Then

LCD.Text(1, 0,12, 1, «This is written at»)

LCD.Text(1, 0,24, 1, «(0,12) using LED.Text»)

LCD.Text(1, 0,36, 1, «in size 1 (medium).»)

EV3.SetLEDColor («GREEN», «Pulse»)

‘ Включаем зеленую пульсирующую подсветку

ElseIf Text.IsSubText(click,»R») Then

LCD.Text(1, 0,40, 2, «made using»)

LCD.Text(1, 0,60, 2, «LED.Text in»)

EV3.SetLEDColor («ORANGE», «Normal») ‘ Включаем красную подсветку

ElseIf Text.IsSubText(click,»E») Then

LCD.Circle(1, 50, 70, 30) ‘ color,x,y,radius

LCD.FillRect (1, 90, 80, 60, 40) ‘ color,x,y,width,height

EV3.SetLEDColor («RED», «Normal»)

Program.Delay(500) ‘wait 0.5 seconds (500 milliseconds)

EV3.SetLEDColor («Green», «Normal»)

EV3.SetLEDColor («Orange», «Normal»)

5. Пользовательские картинки и звуки

EV 3 Бейсик может работать только с LEGO -форматами звуков RSF и графики RGF /

Звуки и графика должны быть помещены в папку с проектом с помощью EV3 Explorer . Можно использовать звуки и графику из других проектов, указав в имени файла путь, включающий имя проекта, из которого заимствуются ресурсы. Файл можно создать в официальном ПО от LEGO, нарисовав, записав на микрофон, скачав из интернета.

Пример использования пути к файлу:

LCD.BmpFile(1, 0, 0, «Images/Angry») ‘ цвет 1 — черный , x=0,y=0, файл Angry из проекта ( папки ) Images

Speaker . Play (100, « Sounds / T — rex roar «) ‘ расширение файла не указывается

Program.Delay(10000) ‘ ждем 10 секунд

EV 3 Бейсик совместим со средними и большими моторами EV3, а также с моторами NXT и, по большому счету, не делает различий при работе с ними.

EV 3 Бейсик имеет 9 команд, которые могут использоваться для управления моторами и только 4 из них достаточно простые, чтобы использоваться начинающими робототехниками: Motor.Move, Motor.MoveSync, Motor.Start и Motor.StartSync. И, конечно же, Вам потребуется Motor.Stop для того, чтобы останавливать мотор.

Команды для работы с моторами используют следующие параметры:

порт – порт EV3, к которому подключен мотор, например » BC «. «A». Если моторов в параметре несколько – они всегда в алфавитном порядке.

угол – угол поворота мотора . Всегда положительное значение, в случае отрицательного – знак игнорируется. Если мотор нужно вращать в обратную сторону – меняйте знак у скорости, а не у угла! Конвертация оборотов в градусы – умножением на 360 и наоборот.

тормоз = » True «, когда после остановки мотор должен затормозить, иначе » False «

скорость – от -100 до 100, знак числа определяет направление

Примеры использования при повороте мотора на определенный угол:

Motor . Move (порт, скорость, угол, тормоз) — для поворота одного мотор на определенный угол

Пример: Motor . Move (« A «, 40, 80, « True «) – мотор А на скорости 40 повернуть на 80 градусов и затормозить.

Motor . Move (порты, скорость, угол, тормоз) — для поворота нескольких мотор на определенный угол с одинаковой скоростью

Пример: Motor . Move (« BC «, -30, 720, « True «) — моторы B и C на скорости -30 повернуть на 2 оборота (720 градусов) и затормозить.

Motor.MoveSync(порты, скорость1, скорость2, угол, тормоз) – команда используется для того, чтобы робот мог двигаться по изогнутой линии или разворачиваться на месте используя два мотора с разными скоростями вращения, контролируя угол поворота мотора. Скорость1 и скорсоть2 – скорости моторов, от меньшего по алфавиту порта к большему. Угол – угол, на который должен повернуться более быстрый из двух моторов. Команда похожа на блок «Танк» в стандартном ПО LEGO EV3-G/

Читайте также:  Не работает датчик давления масла ваз 2112 16 клапанов

Пример: Motor . MoveSync (« BC «, 30, 40, 720, « True «) – моторы B и C включить со скоростями 30 и 40 до того момента, пока мотор C не сделает два оборота (720 градусов), затем затормозить.

Примеры использования при работе мотора заданный промежуток времени:

Чтобы мотор работал определенный промежуток времени нужно запустить его, подождать командой Program . Delay и выключить командой Motor . Stop

Motor . Start (порты, скорость) — чтобы включить один или более моторов определенной (одинаковой для нескольких) скоростью.

Пример: включаем моторы B и С на 3 секунды со скоростью 80

Program.Delay(3000) ‘ ждем 3 секунды

Motor.Stop(«BC»,»True») ‘ «True» для торможения

Motor . StartSync (порты, скорость1, скорость2) — команда используется для того, чтобы робот мог двигаться по изогнутой линии или разворачиваться на месте используя два мотора с разными скоростями вращения.

Пример: робот разворачивается на месте 5 секунд, затем останавливается

Изменение скорости: если мотор уже вращается с какой-то скоростью, то команда Motor. Start изменит его скорость на новую, заданную в ней.

В следующей таблице приведены рекомендации по выбору команд для управления моторами

Двигаться x градусов, программа ждет завершения

Включиться на постоянное вращение

Запуститься для вращения x градусов

Motor . GetCount (порт) – прочитать показания энкодера на порту

Motor.ResetCount (порты) – сбросить показания энкодера на портах

Motor.GetSpeed (порт) – выдает скорость мотора, подключенного к порту

Motor.IsBusy (порты) – выдает True», если один или несколкьомоторов заняты, иначе «False»

Motor . MovePower (порты, мощность, угол, торможение) – тоже самое, что и Motor . Move , но вместо скорсоти мотора оперирует его мощностью

Motor . Schedule (порты, скорость, угол1, угол2, угол3, тормоз) – поворот на заданный угол с плавным стартом и остановом. Общий угол поворота – угол1+угол2+угол3, причем на участке угол1 происходит ускорение, на участке угол2 – заданная скорость поддерживается, на участке угол3 – происходит замедление. Важно! Команда не ждет завершения работы мотора. Если енобходимо дождаться выполнения, используйте Motor.Wait(порты)

Motor.SchedulePower(порты, мощность, угол1, угол2, угол3, тормоз) – тоже самое, что и предыдущая, но оперирует мощностью вместо скорости.

Motor.Wait(порты) – ожидает, пока Schedule или Move команда не закончит свою работу

Пример программ для управления моторами:

‘ Простое управление моторами, подключенными к портам B и С

‘ У вас может оказаться реверсивное подключение моторов, поэтому

‘ если наблюдаете движение робота в обратном направлении

‘ измените знак у параметра скорости

‘ Робот поворачивает направо используя мотор B

‘ включенный на 50% скорости на угол 360°, затем тормозит

Program.Delay(2000) ‘ Пауза 2 секунды (2000 миллисекунд )

‘ Робот движется вперед на 30% скорости на два оборота мотора

‘ Чтобы выполнить старт и останов более плавным используем команды ‘ Schedule ‘ или

‘ SchedulePower . Эти команды имеют зону (угол поворота мотора) разгона,

‘ зону постоянной скорости и зону торможения. Для примера

‘ Motor . Schedule (порты, скорость, зона1, зона2, зона3, торможение)

‘ зона1 and зона3 это углы, в пределах которых мотор загоняется и замедляется

‘ Чтоыб разогнать робота в течении одного оборота моторов,

‘ затем поддерживать скорость 60% в течении двух оборотов моторов (720°),

‘ затем замедляться в течении трех оборотов(1080°) при движении вперед:

Motor.Schedule(«BC», 60, 360, 720, 1080, «True»)

‘ Замечание – команда S chedule не ждет пока мотор отработает заданное действие,

‘ поэтому если Вам не нужно в это время выполнять других действий воспользуйтесь

‘ командой Motor . Wait () чтобы дождаться окончания команды S chedule

‘ Если вы применяете команду Motor . Move () к нескольким моторам

‘ они будут вращаться с одинаковой скоростью. Как же можно

‘ заставить их вращаться с разными скоростями?

‘ В стандартном графическом ПО от LEGO есть программный блок “ Move Tank ”

‘ для вращения двух моторов с разными скоростями на определенное количество

‘ градусов, оборотов или по времени.

‘ В среде EV 3 Basic заменой такому танковому блоку, управляющему

‘ двумя моторами для движения по искривленной траектории

‘ с разными скоростями на каждом из моторов является команда

‘ Motor . MoveSync (порты, скорость1, скорость2, угол, тормоз)

‘ Скорость1 и скорость2 – скорости двух моторов, перечисленных в портах

‘ в алфавитном порядке, угол – для более быстрого из двух моторов

Motor.MoveSync(«BC», 50, -60, 215, «True»)

‘ В этом примере мотор B повернется со скоростью 50%, а мотор C со скоростью -60%

‘ в обратном направлении на 215 градусов, считая по мотору С, т.к. он быстрее

‘ Для разворота робота на месте скорости моторов должны быть равны, но

‘ Motor . MoveSync заставляет программу ждать, пока она выполняется

‘ Ниже приведен пример программы для рисования роботом квадрата

‘ Возможно Вам придется изменить угол 430° в зависимости от конструкции робота

‘ Чтобы заставить повернуть его на 90°

‘ Приведенный выше пример ведет робота по квадрату с закругленными углами

‘ так как робот не разворачивается на месте, а вращает одним мотором

‘ В следующем примере робот проедет по квадрату с поворотами в его углах

‘ вокруг своей оси, для этого его моторы будут вращаться в противоположных

Motor.Move («BC», 40, 720, «True») ‘Move forwards

Motor.MoveSync(«BC», 40, -40, 215, «True»)

‘ В следующем роботе робот едет по правильному многоугольнику,

‘ Число сторон которого вводит пользователь в появившемся текстовом окне

Textwindow.Write («Trace a polygon with how many sides (3-9)?»)

degrees =2.39*360/ sides ‘Каждое колесо должно повернуться на этот угол

‘ Поскольку при повороте каждого колеса на 215° робот поворачивал на 90°

‘ мы должны повернуть каждое колесо на 215/90=2.39° чтобы робот повернул на 1°.

Motor.MoveSync(«BC», 20, -20, degrees, «True»)

‘ Следующая программа использует кнопки EV 3 для управления

‘ моторами, подключенными к портам B и C .

LCD.Text(1, 0,30, 1, «Control motors with»)

LCD.Text(1, 0,45, 1, «directional buttons»)

LCD.Text(1, 0,70, 1, «Left/Right: Motor B»)

LCD.Text(1, 0,85, 1, «Up/Down: Motor C»)

while « True « ‘» True » это всегда истина, этот цикл будет бесконечен

K = Buttons . Current ‘ запросим состояние кнопок

SB = 0 ‘ установим скорость мотора B в 0

SC = 0 ‘ установим скорость мотора C в 0

‘ проверяем нет ли в строке символа L, то есть не нажата ли кнопка Влево

elseif Text.IsSubText(K, «R») then

elseif Text.IsSubText(K, «D») then

‘ Устанавливаем скорости моторам

‘ ждем 100 миллисекунд, чтобы не сильно нагружать опросом кнопок блок

EV 3 Бейсик совместим со всеми стандартными EV 3 и NXT датчиками, правда датчик звука пока под вопросом, работа по его поддержке продолжается.

Как и в LEGO EV3-G многие датчики могут использоваться в нескольких режимах. Чтобы переключить датчик в определенный режим используется команда Sensor.Setmode(порт, режим), например команда Sensor.SetMode(3, 1) переключит датчик на порту 3 в режим Важно всегда устанавливать режим работы датчика перед его использованием..

  • Некоторые режимы датчиков возвращают значение в процентах. Для чтения показаний таких датчиков используйте функцию Sensor .ReadPercent (порт). К примеру датчик касания возвращает в этом режиме 0, если кнопка не нажата и 100 в нажатом положении.
  • Некоторые режимы датчиков возвращают значение не в процентах. Например, датчик цвета в режиме 2 «определение цвета» возвращает коды цветов от 0 до 7 (0 – неизвестно, 1 – черный и т.д.), ультразвуковой датчик в режиме 0 выдает целые числа от 0 до 255, соответствующие измеренному им расстоянию до объекта в миллиметрах. Для чтения одного значения, не в процентах, используйте функцию Sensor .ReadRawValue (порт, индекс). Индекс как правило равен 0, за исключением особых случаях, о которых – ниже.
  • Некоторые режиме датчиков возвращают несколько значений одновременно, в массиве. Чтобы прочитать этот массив используйте функцию Sensor .ReadRaw (порт, количество_элементов). Например, чтобы получить RGB (красную, зеленую и синюю составляющие цвета) с датчика цвета на порту 3 используйте функцию Sensor .ReadRaw (3, 3). Нумерация элементов в массиве начинается с нуля. Первый элемент имеет индекс [0], это интенсивность красной компоненты света, [1] – зеленой и [2] – синей.
Читайте также:  Датчик вибрации ра 023

Датчик касания (кнопка) используется с функцией Sensor . ReadPercent (порт), которая возвращает 0, если кнопка не нажата и 100 в нажатом положении.

В EV3 Бейсике цветосветовой датчик может работать в 4 режимах:

· Режим отраженного света (режим 0)

· Режим измерения уровня внешней освещенности (режим 1)

· Режим измерения цвета (режим 2)

· Режим измерения RBG-составляющих цвета (режим 4)

В режиме 0 датчик возвращает по функции ReadPercent (порт) уровень отраженного света в процентах (от 0 до 100).

В режиме 1 датчик возвращает 0 при минимуме внешнего освещения и 199 на ярком свету, используется функция ReadPercent (порт). Ниже пример программы, выводящей на экран уровень внешней освещенности в %

Sensor . SetMode (3,1) ‘ переводим датчик цвета на 3 порту в режим 1

LCD . StopUpdate () ‘ не обновляем экран, пока не подготовим вывод текста

LCD.Text(1,80,90, 2, Sensor.ReadPercent(3))

Program.Delay(100) ‘ ждем 0.1 секунду

В режиме 2 датчик цвета возвращает код цвета (0 – цвет не определен, 1 – черный, 2 – синий, 3 – зеленый, 4 – желтый, 5 – красный, 6 – белый, 7 – коричневый). Для работы с датчиком в этом режиме используйте функцию Sensor . ReadRawValue (порт, 0). Ниже приведен пример программы, отображающей на экране название цвета, который определил датчик.

Sensor . SetMode (3,2) ‘Устанавливаем режим 2 датчика цвета на порту 3

LCD . StopUpdate () ‘не обновлять экран пока не выведем на него текст

LCD.Text(1,33,40, 2, «Color «+ code)

Эту же самую программу можно написать красивее, используя массив цветов.

LCD.Text(1,33,40, 2, «Color «+ Code)

LCD.Text(1,33,75, 2, Colors[Code])

Обратите внимание, датчик цвета LEGO откалиброван на цвета кубиков LEGO, по остальным оттенкам цветов, даже если они кажутся для вас очевидными, датчик может выдать неожиданный результат.

Программа с массивом, указанная выше будет прекрасно работать в режиме, когда вы запустите ее с ПК из Small Basic, но не запустится автономно на блоке EV3. Это связано с ограничениями прошивки LEGO, в данном случае связанными с невозможностью работать с массивами строк.

В режиме 4 (не 3! третьего режима у датчика цвета нет) датчик цвета возвращает массив из RBG-составляющих цвета. Это позволит Вам определить любой оттенок цвета, ориентируясь на его составляющие.

Для определения расстояния, которое возвращает ультразвуковой датчик используйте функцию Sensor.ReadRawValue(port number, 0). Датчик ультразвука EV 3 в режиме 0 возвращает расстояние в миллиметрах (не в сантиметрах!). Датчик ультразвука NXT в режиме 0 возвращает расстояние в сантиметрах. Датчик EV 3 в режиме 1 возвращает расстояние в десятых дюймах.

Ниже приведена программа, которая постоянно отображает на экране расстояние, измеренное ультразвуковым датчиком EV3, переводя его в сантиметры делением на 10:

‘ Ультразвуковой датчик подключен к 4 порту

Sensor . SetMode (4,0) ‘ устанавливаем порт 4 в режим 0 – измерения в расстоянии в мм

LCD . StopUpdate () ‘ для избежание мерцания не обновляем экран пока текст не готов

LCD . Text (1,45,55,2, Sensor . ReadRawValue (4, 0)/10+» cm «) ‘ Переводим мм в см

В EV3 Бейсике инфракрасный датчик из домашней версии набора EV3 может работать в следующих режимах:

Режим 0 – измерение расстояния до объекта в см

Режим 1 – измерение расстояния и направления на ИК-маяк

Режим 2 – сигналы, принятые от ИК-маяка (или от маяков, до 4 одновременно)

По умолчанию датчик работает в режиме 0 и функция Sensor.ReadPercent() возвращает целое число от 0 до 100 — расстояния до объекта в см. Это расстояние не особо точное, зависит от освещенности объекта. Более точно измеряется расстояние до ярко освещенных объектов.

Ниже приведена программа, которая постоянно отображает на экране расстояние, измеренное инфракрасным датчиком в сантиметрах:

‘ Подключите ИК-датчик к 4 порту

Sensor . SetMode (4,0) ‘ устанавливаем режим работы 4 порта в 0, для измерения в см

LCD . StopUpdate () ‘ для избежание мерцания не обновляем экран пока текст не готов

При переключении в режим 1 с помощью команды Sensor.SetMode(4,1) ИК датчик на 4 порту начинает возвращать расстояние и направление на ИК-маяк. При этом он возвращает оба значения одновременно по функции Sensor.ReadRaw(порт, 2). Возвращаемое ей значение – массив, в 0 элементе – направление на ИК маяк, в 1 элементе — расстояние до ИК-маяка в см.

После переключения в режим 2 IR — REMOTE , с помощью команды. SetMode (4,2) ИК-датчик, подключенный в порт 4, начинает определять, какие кнопки нажаты на удаленном маяке (маяках).

В случае, если только один маяк передает коды нажатых кнопок на ИК-датчик, необходимо использовать Sensor.ReadRawValue(4, канал_передачи) для получения кодов кнопок.

А — левая верхняя, B – левая нижняя, С – правая верхняя, D – правая нижняя. E — средняя

Коды, принимаемые Sensor.ReadRawValue(4, канал_передачи)

Все другие комбинации выдадут 0

В случае, если несколько маяков одновременно передают коды нажатых кнопок на ИК-датчик на разных каналах, необходимо использовать функцию Sensor.ReadRaw(4, 4), которая возвращает массив из 4 значений, одного на каждый канал. 0-й элемент массива соответствует маяку на 1 канале и т.д.

Датчик гироскопа входит в состав образовательного набора EV3, он может быть приобретен отдельно для домашней версии, с которой полностью совместим.

Очень важно, чтобы датчик гироскопа был неподвижен в момент запуска блока EV3 или при подключении кабеля между гироскопом и включенным блоком, иначе показания гироскопа будут постоянно отклоняться (явление «дрейфа»). Для устранения дрейфа можно переподключить кабель к неподвижному датчику. Проверить, проявляется ли дрейф можно в меню «Port View»? показания дна порту с гироскопом должны быть стабильны при неподвижном датчике.

Режим 0 гироскопа измеряет угов в градусах относительно позиции датчика на момент старта программы или сброса его показаний. Датчик одноосный, может измерять отклонения или в горизонтальной или в вертикальной плоскости – зависит от того как Вы установите его на робота. Для чтения показаний в этом режиме используйте функцию Sensor.ReadRawValue(порт, 0) которая возвращает массив из единственного 0-го элемента.

Ниже приведена программа, отображающая на экране показания гироскопа в градусах

‘ Гироскоп подключен к 2 порту

Sensor . SetMode (2,0) ‘ Режим 0 – измерение отклонения в градусах

LCD . StopUpdate () ‘ для избежание мерцания не обновляем экран пока текст не готов

LCD.Text(1,35,50,2, Sensor.ReadRawValue(2,0) + » deg»)

Program.Delay(100) ‘ ждем 0.1 секунду

Режим 1 гироскопа измеряет скорость изменения отклонения в градусах в секунду. Предыдущая программа подходит для примера работы в этом режиме, замените в ней выбор режима работы на Sensor . SetMode (2,1) и увидите на экране скорость изменения отклонения в градусах в секунду.

Обратите внимание, что несмотря на то, что датчик гироскопа измеряет отклонения в градусах, встроенные тригонометрические функции Small Basic используют радианы, радиан — это примерно 57.3°.

Также как и в официальном ПО от LEGO моторы могут использоваться в качестве датчиков угла. Функция Motor.GetCount (порт) показывает в градусах угол поворота оси мотора, подключенного к порту, указанному в ее параметрах.

7. Перечень режимов датчиков

Источник

Adblock
detector