Цифровой уровень на модуле LED

Надо повесить полочку, а под рукой нет уровня, чтобы повесить её ровно? Не беда с данным примером вы сможете создать электронный уровень на базе квадрокоптера «Геоскан Пионер».

Необходимые компоненты

Для данного проекта нам необходимо:

  1. Базовая плата Пионера
  2. Модуль LED
  3. Pioneer Station
  4. Аккумулятор

Важно

Аккумулятор необходим для питания 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()