-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathled.lua
47 lines (38 loc) · 1.11 KB
/
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
RGBLed = {}
RGBLed.__index = RGBLed
function RGBLed.new(red_pin, green_pin, blue_pin)
local self = setmetatable({}, RGBLed)
self.red_pin = red_pin
self.green_pin = green_pin
self.blue_pin = blue_pin
pwm.setup(red_pin, 500, 1000)
pwm.setup(green_pin, 500, 1000)
pwm.setup(blue_pin, 500, 1000)
pwm.start(red_pin)
pwm.start(green_pin)
pwm.start(blue_pin)
return self
end
function RGBLed.set(self, red, green, blue)
local function setFreq(pin, value)
if value == 0 then
pwm.stop(pin)
else
pwm.setduty(pin, value)
pwm.start(pin)
end
end
print(red, green, blue)
setFreq(self.red_pin, red)
setFreq(self.green_pin, green)
setFreq(self.blue_pin, blue)
end
function RGBLed.setWarnLevel(self, colorLevel, brightness)
local function toPwmValue(input)
local minValue = math.floor(1023 * (1 - brightness))
return minValue + math.floor((1023 - minValue) * input)
end
local red = toPwmValue(1 - colorLevel)
local green = toPwmValue(colorLevel)
self:set(red, green, 1023)
end