littlewire 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/littlewire.rb +3 -2
- data/lib/ws2811.rb +9 -8
- metadata +2 -7
- data/examples/ws2811 audio.rb +0 -7
- data/examples/ws2811 colors.rb +0 -20
- data/examples/ws2811 scan.rb +0 -25
- data/examples/ws2811 strobe.rb +0 -29
- data/examples/ws2811.rb +0 -39
data/lib/littlewire.rb
CHANGED
@@ -163,8 +163,9 @@ class LittleWire
|
|
163
163
|
def ws2811 pin = false
|
164
164
|
raise "You need to update your LittleWire firmware to version 1.2 to use One Wire" unless version_hex >= 0x12
|
165
165
|
@ws2811 ||= Array.new
|
166
|
-
|
167
|
-
|
166
|
+
pin = get_pin(LittleWire::DigitalPinMap, pin || 0)
|
167
|
+
@ws2811[pin] ||= WS2811.new(self, pin)
|
168
|
+
return @ws2811[pin]
|
168
169
|
end
|
169
170
|
|
170
171
|
alias_method :ws2812, :ws2811
|
data/lib/ws2811.rb
CHANGED
@@ -39,10 +39,11 @@ class LittleWire::WS2811
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
def
|
42
|
+
def send *colors
|
43
43
|
@colors = colors.flatten
|
44
44
|
output
|
45
45
|
end
|
46
|
+
alias_method :set, :send
|
46
47
|
|
47
48
|
def black!
|
48
49
|
@colors = ['black'] * 64
|
@@ -55,8 +56,8 @@ class LittleWire::WS2811
|
|
55
56
|
def preload color
|
56
57
|
@wire.control_transfer(
|
57
58
|
function: :ws2812,
|
58
|
-
wIndex: color.b << 8 | color.r,
|
59
|
-
wValue: color.g << 8 | 0x20
|
59
|
+
wIndex: color.b.to_i << 8 | color.r.to_i,
|
60
|
+
wValue: color.g.to_i << 8 | 0x20
|
60
61
|
)
|
61
62
|
end
|
62
63
|
|
@@ -64,7 +65,7 @@ class LittleWire::WS2811
|
|
64
65
|
def flush pin
|
65
66
|
@wire.control_transfer(
|
66
67
|
function: :ws2812,
|
67
|
-
wIndex: 0, wValue: pin | 0x10
|
68
|
+
wIndex: 0, wValue: pin.to_i | 0x10
|
68
69
|
)
|
69
70
|
output_delay(@colors.length)
|
70
71
|
end
|
@@ -77,8 +78,8 @@ class LittleWire::WS2811
|
|
77
78
|
def write color, pin
|
78
79
|
@wire.control_transfer(
|
79
80
|
function: :ws2812,
|
80
|
-
wIndex: color.b << 8 | color.r,
|
81
|
-
wValue: color.g << 8 | pin | 0x30
|
81
|
+
wIndex: color.b.to_i << 8 | color.r.to_i,
|
82
|
+
wValue: color.g.to_i << 8 | pin.to_i | 0x30
|
82
83
|
)
|
83
84
|
output_delay(@colors.length)
|
84
85
|
end
|
@@ -86,8 +87,8 @@ class LittleWire::WS2811
|
|
86
87
|
# wait as long as it will take for the message to output to the LED strip, so we don't make
|
87
88
|
# any more USB requests while the device is busy flushing pixels with interrupts disabled
|
88
89
|
def output_delay(pixels)
|
89
|
-
# each pixel consumes 30us for it's data, plus
|
90
|
-
sleep((0.00003 * pixels) + 0.
|
90
|
+
# each pixel consumes 30us for it's data, plus a little extra for reset
|
91
|
+
sleep((0.00003 * pixels) + 0.001)
|
91
92
|
end
|
92
93
|
end
|
93
94
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: littlewire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: libusb
|
@@ -68,11 +68,6 @@ files:
|
|
68
68
|
- examples/blinky.rb
|
69
69
|
- examples/fadey.rb
|
70
70
|
- examples/led pixel.rb
|
71
|
-
- examples/ws2811 audio.rb
|
72
|
-
- examples/ws2811 colors.rb
|
73
|
-
- examples/ws2811 scan.rb
|
74
|
-
- examples/ws2811 strobe.rb
|
75
|
-
- examples/ws2811.rb
|
76
71
|
homepage: http://creativepony.com/littlewire/
|
77
72
|
licenses: []
|
78
73
|
post_install_message:
|
data/examples/ws2811 audio.rb
DELETED
data/examples/ws2811 colors.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'littlewire'
|
2
|
-
wire = LittleWire.connect
|
3
|
-
pin = :pin1
|
4
|
-
speed = 1
|
5
|
-
num_leds = 64
|
6
|
-
|
7
|
-
loop do
|
8
|
-
puts "red"
|
9
|
-
wire.ws2811.colors = ['red'] * num_leds
|
10
|
-
wire.ws2811.output pin
|
11
|
-
sleep speed
|
12
|
-
puts "green"
|
13
|
-
wire.ws2811.colors = ['green'] * num_leds
|
14
|
-
wire.ws2811.output pin
|
15
|
-
sleep speed
|
16
|
-
puts "blue"
|
17
|
-
wire.ws2811.colors = ['blue'] * num_leds
|
18
|
-
wire.ws2811.output pin
|
19
|
-
sleep speed
|
20
|
-
end
|
data/examples/ws2811 scan.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'littlewire'
|
2
|
-
wire = LittleWire.connect
|
3
|
-
num_pixels = ARGV.first.to_i
|
4
|
-
|
5
|
-
lit = 0
|
6
|
-
loop do
|
7
|
-
|
8
|
-
text_output = ['-'] * num_pixels
|
9
|
-
text_output[lit] = '*'
|
10
|
-
puts text_output.join
|
11
|
-
|
12
|
-
wire.ws2811.colors = num_pixels.times.map do |idx|
|
13
|
-
if idx == lit
|
14
|
-
'white'.to_color
|
15
|
-
else
|
16
|
-
'black'.to_color
|
17
|
-
end
|
18
|
-
end
|
19
|
-
wire.ws2811.output :pin1
|
20
|
-
|
21
|
-
lit += 1
|
22
|
-
lit %= num_pixels
|
23
|
-
|
24
|
-
sleep 0.02
|
25
|
-
end
|
data/examples/ws2811 strobe.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'littlewire'
|
2
|
-
wire = LittleWire.connect
|
3
|
-
pin = :pin1
|
4
|
-
num_leds = 10
|
5
|
-
MaxBPM = 500
|
6
|
-
|
7
|
-
strobe_duration = 0.01
|
8
|
-
bpm = 30
|
9
|
-
|
10
|
-
Thread.start do
|
11
|
-
loop do
|
12
|
-
print "Enter BPM: "
|
13
|
-
new_bpm = (gets.to_f rescue bpm)
|
14
|
-
new_bpm = MaxBPM if new_bpm > MaxBPM
|
15
|
-
bpm = new_bpm
|
16
|
-
puts "Set to #{bpm}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
loop do
|
21
|
-
wire.ws2811.colors = ['white'] * num_leds
|
22
|
-
wire.ws2811.output pin
|
23
|
-
sleep(strobe_duration)
|
24
|
-
|
25
|
-
wire.ws2811.colors = ['black'] * num_leds
|
26
|
-
wire.ws2811.output pin
|
27
|
-
blackout_duration = (60.0 / bpm) - strobe_duration
|
28
|
-
sleep((60.0 / bpm) - strobe_duration) if blackout_duration > 0
|
29
|
-
end
|
data/examples/ws2811.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
# Send up to 64 colours to a string of WS2812 LEDs or 800khz (version 2) Adafruit Flora NeoPixels
|
2
|
-
# Any 800khz mode ws2811 pixels will work
|
3
|
-
require 'littlewire'
|
4
|
-
wire = LittleWire.connect
|
5
|
-
|
6
|
-
puts DATA.read # print out the little ascii art thing at the end of this file
|
7
|
-
puts "Which pin to use for data output?"
|
8
|
-
print "Enter pin number: "
|
9
|
-
output_pin = gets.gsub(/[^0-9]/, '').to_i
|
10
|
-
|
11
|
-
print "Enter 1st color: "
|
12
|
-
wire.ws2811.colors = [gets.strip.to_color]
|
13
|
-
wire.ws2811.output(output_pin) # output our first color
|
14
|
-
|
15
|
-
titles = ['1st', '2nd', '3rd']
|
16
|
-
|
17
|
-
63.times do |idx|
|
18
|
-
print "Enter #{titles[idx + 1] || "#{idx + 2}th"} color: "
|
19
|
-
gotten = gets.strip
|
20
|
-
break if gotten.empty?
|
21
|
-
# add colour to array
|
22
|
-
wire.ws2811.colors.push gotten.to_color
|
23
|
-
wire.ws2811.output(output_pin) # output the colours to the string
|
24
|
-
end
|
25
|
-
|
26
|
-
puts "All done!"
|
27
|
-
|
28
|
-
__END__
|
29
|
-
LittleWire connector: | Digispark Board:
|
30
|
-
/-----\ | _________
|
31
|
-
pin_1 | o o | vcc | _____| o| ds5
|
32
|
-
pin_2 | o o | pin 4 | |----- o| (usb - not available)
|
33
|
-
pin_3 | o o | gnd | |----- o| (usb - not available)
|
34
|
-
\-----/ | |----- o| ds2
|
35
|
-
|----- o| ds1
|
36
|
-
|_o_o_o__o| ds0
|
37
|
-
5 g v
|
38
|
-
v n c
|
39
|
-
d c
|