Цифровой уровень на модуле 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() |