Модуль захвата груза

../_images/cargo_module.png

Используйте модуль захвата груза для работы с предметами, обладающими магнитным свойствами. Модуль оснащен электромагнитом на гибком подвесе и RGB светодиодами.

Модуль монтируется на плату подключения дополнительных модулей с помощью 4х винтов М3, при этом обеспечивается надежное соединение разъемов.

Пример

Модулем удобно управлять по 8 каналу с помощью двухпозиционного переключателя на пульте. Для настройки канала на нем необходимо во вкладке function найти пункт Aux. channels, выбрать channel 8 и установить переключатель SwA (крайний левый) как управляющий. Теперь нужно загрузить на «Пионер» программу для модуля груза. Ниже - пример Lua программы. После её загрузки на «Пионер» вы сможете управлять работой магнита с помощью крайнего левого тумблера на пульте.

-- Создание порта управления магнитом - порт PC3 на плате версии 1.2
local magnet = Gpio.new(Gpio.C, 3, Gpio.OUTPUT)
-- Создание порта управления магнитом - порт PA1 на плате версии 1.1 (    необходимо раскомментировать строчку ниже и закомментировать строчку     выше)
-- local magnet = Gpio.new(Gpio.A, 1, Gpio.OUTPUT)

-- Количество светодиодов (4 на базовой плате и еще 4 на модуле груза)
local led_number = 8
-- Создание порта управления светодиодами
local leds = Ledbar.new(led_number)
-- Состояние магнита (изначально он находится во включенном состоянии)
local magnet_state = true

-- Функция, устанавливающая цвет светодиодов в зависимости от состояния     магнита
local function setLed(state)
    if (state == true) then
        color = {1,1,1}                  -- Если магнит включен, то     белый цвет
    else
        color = {0,0,0}                  -- Если магнит выключен, то     черный (светодиоды не горят)
    end
    for i = 4, led_number - 1, 1 do      -- Для каждого из 4     светодиодов задаем цвет
        leds:set(i, table.unpack(color))
    end
end

-- Функция переключения магнита
local function toggleMagnet()
    if (magnet_state == true) then  -- Если магнит включен, то     выключаем его
        magnet:reset()
    else                            -- Если выключен, то включаем
        magnet:set()
    end
    magnet_state = not magnet_state -- Инвертируем переменную состояния
end

-- Обязательная функция обработки событий
function callback(event)
end

-- Создание таймера, вызывающего функцию каждую секунуду
cargoTimer = Timer.new(1, function ()
    toggleMagnet()
    setLed(magnet_state)
end)
-- Запуск таймера
cargoTimer:start()