Класс Sensor (Датчик) обеспечивает работу с датчиками, подключенными к блоку EV3. Чтобы указать датчик подключенный к основному блоку, используются номера портов 1 — 4, для указания портов на первом в цепочке подключенных по USB кабелю дополнительном блоке используются номера портов 5 — 8, на втором — 9 — 12, и т.п.
Методы класса Sensor:
GetName
Sensor.GetName(port)
Получает имя текущего режима работы датчика, подключенного к указанному порту. Эта команда предназначена прежде всего для диагностики системы.
port — Номер порта датчика
Возвращает: Имя текущего режима работы датчика (например «TOUCH»)
GetType
Sensor.GetType(port)
Получает числовой идентификатор типа датчика, подключенного к указанному порту. Эта команда предназначена прежде всего для диагностики системы.
port — Номер порта датчика
Возвращает: Числовой идентификатор типа датчика (например 16 — для датчика нажатия)
GetMode
Sensor.GetMode(port)
Получает числовой идентификатор текущего режима работы датчика, подключенного к указанному порту. Многие датчики умеют работать в нескольких режимах. Например, цветосветовой датчик умеет работать с режиме измерения отраженного света, в режиме измерения внешней освещенности, и в режиме измерения цвета объекта. При подключении датчика к блоку, он, как правило, работает в режиме 0.
port — Номер порта датчика
Возвращает: Числовой идентификатор текущего режима работы датчика (0 для режима по умолчанию)
SetMode
Sensor.SetMode(port, mode)
Переключает режим работы датчика, подключенного к указанному порту. Датчики могут работать в нескольких режимах, например, цветосветовой датчик имеет следующие режимы:
0 — отраженный свет
1 — внешняя освещенность
2 — цвет
Программа не продолжит работу до тех пор, пока датчик не переключится в новый режим и данные с него не будут доступны. Обратите внимание, что датчик будет оставаться в выбранном режиме даже после того, как программа завершит работу, поэтому чтобы избежать проблем всегда устанавливайте режим в начале программы перед использованием датчика.
port — Номер порта датчика
mode — Числовой идентификатор нового режима работы датчика из перечня разрешенных для данного типа датчика
IsBusy
Sensor.IsBusy(port)
Проверяет, не занят ли датчик в данный момент сменой режима, инициализацией или выполнением какой-либо другой команды. Если датчик занят, он будет недоступен из программы.
port — Номер порта датчика
Возращает: «True» если датчик занят (недоступен), иначе — «False».
Wait
Sensor.Wait(port)
Ждёт, пока датчик не переключится в новый режим или не инициализируется. Обычно использовать эту команду не нужно, так как метод SetMode() не возвращает управление программе до тех пор, пока не завершится переключение режима датчика. Однако, если в программе используются параллельные задачи (многопоточный режим), без этой команды не обойтись, так как при смене режима в одном из потоков, другие продолжат выполняться, и для них датчик может стать на время недоступным.
port — Номер порта датчика
ReadPercent
Sensor.ReadPercent(port)
Получает текущие показания датчика в процентах (0 — 100). Большинство датчиков, которые считывают данные в большом диапазоне значений, могут вывести свои показания в процентах, например у датчика нажатия: 0 — не нажат, 100 — нажат, или у датчика освещенности: 0 — максимально темно (для датчика), 100 — максимально светло.
port — Номер порта датчика
Возвращает: Текущие показания датчика в процентах.
ReadRaw
Sensor.ReadRaw(port, number)
Читает текущие показания датчика в виде «сырых» данных (без перевода в проценты). В некоторых режимах показания датчиков не могут быть переведены в проценты, например значения цвета, в этом случае и используется метод ReadRaw().
port — Номер порта датчика
number — Размер возвращаемого массива с показаниями
Возвращает: Массив показаний датчика с заданным числом элементов. Массив начинается с 0 элемента. Элементы, в которых данные не получены, будут равны 0.
ReadRawValue
Sensor.ReadRawValue(port, ind)
Читает одно текущее показание датчика в виде «сырых» данных (без перевода в проценты). В отличие от ReadRaw(), возвращает только одно выбранное показание датчика из массива. Например, для работы с цветосветовым датчиком в режиме определения цвета, подключенным к 3 порту, можно использовать вызов метода в виде Sensor.ReadRawValue(3, 0).
port — Номер порта датчика
ind — Индекс элемента массива с показаниями датчика (начиная с 0).
Возвращает: Одно значение из массива данных полученное с датчика в «сыром» виде.
Обеспечивает взаимодействие с устройством, работающим по протоколу I2C, подключенным к одному из портов датчиков. Метод может посылать или принимать несколько байт по шине I2C. С помощью этого метода можно работать с датчиками сторонних производителей, использующих протокол обмена данными I2C или, например, с устройствами на базе Arduino. Обратите внимание, что метод работает только в пределах одного блока EV3 и только с подчиненными (Slave) I2C устройствами.
port — Номер порта датчика
addr — Адрес подчиненного устройства, подключенного к шине I2C (0 — 127)
nwbytes — Количество байт для отправки на I2C-устройство (максимум 31).
nrbytes — Количество байт для приема с I2C-устройства (1 -32).
array — массив, содержащий байты для отправки (индекс первого элемента — 0)
Возвращает: Массив, содержащий запрошенное количество принятых байт с I2C-устройства (индекс первого элемента — 0)
SendUARTData
Sensor.SendUARTData(port, nwbytes, array)
Посылает данные по протоколу UART устройству, подключенному к порту датчика. Функция полезна для общения с самодельными датчиками и исполнительными устройствами.
port — Номер порта датчика
nwbytes — Количество байт для отправки на устройство (максимум 32).
array — массив, содержащий байты для отправки (индекс первого элемента — 0)