-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstatus_led.lua
57 lines (47 loc) · 1.06 KB
/
status_led.lua
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
-- Config
local pin = 4 --> GPIO2
local value = gpio.HIGH
local BLINK_DURATION_ALARMER = 1
local BLINK_PERIOD_ALARMER = 2
-- Initialise the pin
gpio.mode(pin, gpio.OUTPUT)
gpio.write(pin, value)
-- Function turns LED on
function led_on()
gpio.write(pin, gpio.LOW)
end
-- Function turns LED off
function led_off()
gpio.write(pin, gpio.HIGH)
end
-- Function toggles LED state
function led_toggle()
value = gpio.read(pin)
if value == gpio.LOW then
value = gpio.HIGH
else
value = gpio.LOW
end
gpio.write(pin, value)
end
-- Blink once during BLINK_DURATION
function led_blink(duration)
led_toggle()
tmr.alarm(BLINK_DURATION_ALARMER, duration, 0, led_toggle)
end
-- Start blinking every BLINK_PERIOD
function led_start_blink(period, duration)
-- Stop if already blinking
led_stop_blink()
-- Blink once
led_blink(duration)
-- Create an alarm to repeat blink
tmr.alarm(BLINK_PERIOD_ALARMER, period, 1, function()
led_blink(duration)
end)
end
-- Stop blinking
function led_stop_blink()
tmr.stop(BLINK_PERIOD_ALARMER)
led_off()
end