ledstrip 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ledstrip/type/lpd6803.rb +26 -18
- data/lib/ledstrip/version.rb +1 -1
- data/spec/ledstrip/type/lpd6803_spec.rb +21 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbca0a6c63df8bf873ba6bf2827f82c0b403fe76
|
4
|
+
data.tar.gz: 0a4cc0743cc2f4af63217fcf34b67c7d09a42b19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9ba0c042427fdd9d57460f465dd113ddc9fc8c5ccc00f82ddda2ef51c0cbe4c4e6cd9226c8f1cc8d61e4737b5f4277ff1d53e8c45783e5504d26ccc6809b48d
|
7
|
+
data.tar.gz: bad0a16b0ea5247173a953d9f91b67a759652485a4e1a34a44fa5e1654caaf4667b5b816054fb9e5793ce94cb36d8515de274067e99e02ec93971c9b6cb2004c
|
@@ -1,47 +1,55 @@
|
|
1
1
|
module Ledstrip
|
2
2
|
module Type
|
3
3
|
class LPD6803
|
4
|
-
def initialize
|
4
|
+
def initialize(order: [:r, :g, :b])
|
5
|
+
@order = order
|
5
6
|
end
|
6
7
|
|
7
8
|
def draw(leds)
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
bytes = []
|
10
|
+
bytes << start_bytes
|
11
|
+
bytes << led_bytes(leds)
|
12
|
+
bytes << end_bytes(leds.size)
|
13
|
+
|
14
|
+
write(bytes.flatten)
|
11
15
|
end
|
12
16
|
|
13
17
|
def write(array)
|
14
|
-
#PiPiper::Spi.spidev_out(array)
|
15
18
|
File.open('/dev/spidev0.0', 'wb'){|f| f.write(array.pack('C*')) }
|
16
19
|
end
|
17
20
|
|
18
21
|
private
|
19
|
-
def
|
22
|
+
def start_bytes
|
20
23
|
# 32 bits start frame
|
21
|
-
|
24
|
+
[0,0,0,0]
|
22
25
|
end
|
23
26
|
|
24
|
-
def
|
25
|
-
leds.
|
26
|
-
|
27
|
-
end
|
27
|
+
def led_bytes(leds)
|
28
|
+
bytes = leds.collect do |led|
|
29
|
+
led_byte(led)
|
30
|
+
end.flatten
|
28
31
|
end
|
29
32
|
|
30
|
-
def
|
33
|
+
def led_byte(led)
|
31
34
|
bits = 0b1000000000000000
|
32
|
-
bits |= ((led
|
33
|
-
bits |= ((led
|
34
|
-
bits |= ((led
|
35
|
+
bits |= ((first_part(led) / 255) * 31).to_i << 10
|
36
|
+
bits |= ((second_part(led) / 255) * 31).to_i << 5
|
37
|
+
bits |= ((third_part(led) / 255) * 31).to_i
|
35
38
|
|
36
39
|
output = []
|
37
40
|
output[0] = (bits & 0xff00) >> 8
|
38
41
|
output[1] = (bits & 0x00ff) >> 0
|
39
|
-
|
42
|
+
|
43
|
+
output
|
40
44
|
end
|
41
45
|
|
42
|
-
def
|
46
|
+
def first_part(led); led.send(@order[0]).to_f; end
|
47
|
+
def second_part(led); led.send(@order[1]).to_f; end
|
48
|
+
def third_part(led); led.send(@order[2]).to_f; end
|
49
|
+
|
50
|
+
def end_bytes(size)
|
43
51
|
# two versions found online, one is to use bits per led other is bytes per led
|
44
|
-
|
52
|
+
Array.new(size / 8 + 1, 0)
|
45
53
|
# write(Array.new(size, 0))
|
46
54
|
end
|
47
55
|
end
|
data/lib/ledstrip/version.rb
CHANGED
@@ -7,10 +7,29 @@ describe LPD6803 do
|
|
7
7
|
|
8
8
|
describe "#draw" do
|
9
9
|
|
10
|
-
|
10
|
+
it "draws a red led" do
|
11
11
|
subject = LPD6803.new
|
12
|
-
red_led = Led.new(r: 255, g: 0, b: 0)
|
12
|
+
red_led = Ledstrip::Led.new(r: 255, g: 0, b: 0)
|
13
|
+
|
14
|
+
allow(subject).to receive(:write)
|
13
15
|
subject.draw([red_led])
|
16
|
+
|
17
|
+
result = [0,0,0,0,0b11111100, 0b00000000, 0]
|
18
|
+
expect(subject).to have_received(:write).with(result)
|
19
|
+
end
|
20
|
+
|
21
|
+
context "with different order" do
|
22
|
+
it "draws a red led" do
|
23
|
+
subject = LPD6803.new(order: [:g, :r, :b])
|
24
|
+
red_led = Ledstrip::Led.new(r: 255, g: 0, b: 0)
|
25
|
+
|
26
|
+
allow(subject).to receive(:write)
|
27
|
+
|
28
|
+
result = [0,0,0,0,0b10000011, 0b11100000, 0]
|
29
|
+
subject.draw([red_led])
|
30
|
+
|
31
|
+
expect(subject).to have_received(:write).with(result)
|
32
|
+
end
|
14
33
|
end
|
15
34
|
|
16
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ledstrip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roy van der Meij
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pi_piper
|