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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b1ac284b6770aaca6536a8e2fe63f808eaf46f9
4
- data.tar.gz: ed5c1923fac5ce879322b1dac31219823decff09
3
+ metadata.gz: cbca0a6c63df8bf873ba6bf2827f82c0b403fe76
4
+ data.tar.gz: 0a4cc0743cc2f4af63217fcf34b67c7d09a42b19
5
5
  SHA512:
6
- metadata.gz: 6b4d62797761eb029b1987e684c79d043f655f8130e8040922dfe66f26b9737bc6e795cffe20f0f0606a0b0fe321f064880a292e914f373f41afeb11ff5d912f
7
- data.tar.gz: a94fc8728d962bb68c8f1375496e5e22c6dc17d479d516fc85d64021ff3cec58787d1ddb66d1381ee6f87e2488398331ef7d54e4d36be9b8c68e27fb9a387321
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
- write_start_bytes
9
- write_leds(leds)
10
- write_end_bytes(leds.size)
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 write_start_bytes
22
+ def start_bytes
20
23
  # 32 bits start frame
21
- write([0,0,0,0])
24
+ [0,0,0,0]
22
25
  end
23
26
 
24
- def write_leds(leds)
25
- leds.each do |led|
26
- write_led(led)
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 write_led(led)
33
+ def led_byte(led)
31
34
  bits = 0b1000000000000000
32
- bits |= ((led.r / 255) * 31) << 10
33
- bits |= ((led.g / 255) * 31) << 5
34
- bits |= ((led.b / 255) * 31)
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
- write(output)
42
+
43
+ output
40
44
  end
41
45
 
42
- def write_end_bytes(size)
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
- write(Array.new(size / 8 + 1, 0))
52
+ Array.new(size / 8 + 1, 0)
45
53
  # write(Array.new(size, 0))
46
54
  end
47
55
  end
@@ -1,3 +1,3 @@
1
1
  module Ledstrip
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -7,10 +7,29 @@ describe LPD6803 do
7
7
 
8
8
  describe "#draw" do
9
9
 
10
- xit "draws a red led" do
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.3
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-21 00:00:00.000000000 Z
11
+ date: 2014-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pi_piper