ws2801 0.1

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.
Files changed (2) hide show
  1. data/lib/ws2801.rb +115 -0
  2. metadata +45 -0
@@ -0,0 +1,115 @@
1
+ #
2
+ # Controller for: RGB Pixel with WS2801 Chip
3
+ # build for Diffused Digital RGB LED Pixels from Adafruits on Raspberry Pi
4
+ # (c) 2013 Roman Pramberger (roman.pramberger@gmail.com)
5
+
6
+ # WS2801 driver
7
+ module WS2801
8
+ @@len = 25
9
+ @@strip = []
10
+ @@device = "/dev/spidev0.0"
11
+
12
+ # Set/read length of strip
13
+ #
14
+ # Example:
15
+ # >> WS2801.length(25)
16
+ # >> WS2801.length
17
+ # => 25
18
+ #
19
+ # Arguments (or nil):
20
+ # count: (Integer)
21
+ def self.length len = nil
22
+ return @@len if len.nil?
23
+ @@len = len
24
+ end
25
+
26
+ # Set/read device
27
+ #
28
+ # Example:
29
+ # >> WS2801.device("/dev/spidev0.0")
30
+ # >> WS2801.device
31
+ # => "/dev/spidev0.0"
32
+ #
33
+ # Arguments (or nil):
34
+ # device: (String)
35
+ def self.device dev = nil
36
+ return @@device if dev.nil?
37
+ @@device = dev
38
+ end
39
+
40
+ # Generate empty strip array
41
+ #
42
+ # Example:
43
+ # >> WS2801.gen
44
+ def self.gen
45
+ @@strip = Array.new(@@len*3+1)
46
+ end
47
+
48
+ # Return current Strip
49
+ #
50
+ # Example;
51
+ # >> WS2801.strip
52
+ def self.strip
53
+ return @@strip
54
+ end
55
+
56
+ # Write stripinfo to device (if not empty)
57
+ # this needs root rights
58
+ #
59
+ # Example:
60
+ # >> WS2801.write
61
+ def self.write
62
+ return false if @@strip.nil?
63
+
64
+ @@strip.each_with_index do |s,i|
65
+ @@strip[i] = 0 if @@strip[i].nil?
66
+ end
67
+
68
+ File.open(@@device, 'w') do |file|
69
+ file.write(@@strip.pack('C*'))
70
+ end
71
+ end
72
+
73
+ # Put pixel X to
74
+ #
75
+ # Example:
76
+ # >> WS2801.put 3, 120, 255, 120
77
+ #
78
+ # Arguments:
79
+ # pixel (Integer)
80
+ # red (Integer)
81
+ # green (Integer)
82
+ # blue (Integer)
83
+ def self.put pixel, red, green, blue
84
+ return false if @@strip.nil?
85
+ @@strip[(pixel*3)] = red
86
+ @@strip[(pixel*3)+1] = green
87
+ @@strip[(pixel*3)+2] = blue
88
+ end
89
+
90
+ # Fill all pixel
91
+ #
92
+ # Example:
93
+ # >> WS2801.fill 120, 255, 120
94
+ #
95
+ # Arguments:
96
+ # red (Integer)
97
+ # green (Integer)
98
+ # blue (Integer)
99
+ def self.fill red, green, blue
100
+ ((@@strip.size-1)/3).times do |i|
101
+ @@strip[(i*3)] = red
102
+ @@strip[(i*3)+1] = green
103
+ @@strip[(i*3)+2] = blue
104
+ end
105
+ end
106
+
107
+ # Reset pixel to black
108
+ #
109
+ # Example:
110
+ # >> WS2801.reset
111
+ def self.reset
112
+ self.gen
113
+ self.write
114
+ end
115
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ws2801
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - roman pramberger
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-12 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Controlling ws2801 chip from Ruby (RGB LED Stripes/Pixel)
15
+ email: roman DOT pramberger AT gmail DOT com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/ws2801.rb
21
+ homepage: http://b1nary.ch
22
+ licenses: []
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 1.8.23
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: Controlling ws2801 chip from Ruby (RGB LED Stripes/Pixel)
45
+ test_files: []