Цифровой уровень на модуле LED¶
Надо повесить полочку, а под рукой нет уровня, чтобы повесить её ровно? Не беда с данным примером вы сможете создать электронный уровень на базе квадрокоптера «Геоскан Пионер».
Необходимые компоненты¶
Для данного проекта нам необходимо:
- Базовая плата Пионера
- Модуль LED
- Pioneer Station
- Аккумулятор
Важно
Аккумулятор необходим для питания LED модуля, поскольку питания от USB недостаточно для работы LED модуля.
Пример¶
Установите LED модуль сверху на базовую плату и загрузите приведённый ниже скрипт через Pioneer Station.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | -- Test programm accelerometer show
-- количество светодиодов на основной плате пионера(4) + на модуле LED (25)
local ledNumber = 29
-- создание порта управления светодиодами
local leds = Ledbar.new(ledNumber)
local offset = 4
local pitchLED = 2 -- начальные координата "заженного" светодиода по X
local rollLED = 2 -- начальные координата "заженного" светодиода по Y
local function showAccel()
leds:set(pitchLED*5 + rollLED + offset, 0, 0, 0)
roll, pitch = Sensors.orientation()
rollLED = math.floor(roll/10)
pitchLED = math.floor(pitch/10)
if rollLED > 2 then
rollLED = 2
end
if rollLED < -2 then
rollLED = -2
end
if pitchLED > 2 then
pitchLED = 2
end
if pitchLED < -2 then
pitchLED = -2
end
rollLED = rollLED + 2
pitchLED = pitchLED + 2
leds:set(pitchLED*5 + rollLED + offset, 0, 1, 0)
end
local function test()
leds:set(pitchLED*5 + rollLED + offset, 0, 0, 0)
pitchLED = pitchLED + 1
rollLED = rollLED + 1
if rollLED == 5 then
rollLED = 0
end
if pitchLED == 5 then
pitchLED = 0
end
leds:set(pitchLED*5 + rollLED + offset, 0, 1, 0)
end
-- создание таймера, который каждую секунду меняет цвет всех светодиодов на случайный
timerRandomLED = Timer.new(1, function ()
test()
end)
-- запуск созданного таймера
timerRandomLED:start()
|