class Domotics::Core::RgbStrip
Public Class Methods
new(args = {})
click to toggle source
Calls superclass method
Domotics::Core::Element::new
# File lib/domotics/core/element/rgb_strip.rb, line 3 def initialize(args = {}) @type = args[:type] || :rgb_strip @strips = Hash.new @crazy_lock = Mutex.new @crazy_thread = nil super sub_args = args.dup %w(r g b).each do |x| sub_args[:name] = (args[:name].to_s+"_#{x}_strip").to_sym sub_args[:pin] = args[x.to_sym] @strips[x.to_sym] = Dimmer.new(sub_args) end end
Public Instance Methods
blue()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 23 def blue @strips[:b] end
color()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 35 def color @strips.values.map { |strip| strip.state } end
crazy()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 73 def crazy @crazy_lock.synchronize do @crazy_thread.kill if @crazy_thread @crazy_thread = Thread.new do loop do @fade_threads = @strips.values.map { |strip| strip.fade_to(rand(Dimmer::MAX_LEVEL), 1) } @fade_threads.each { |thread| thread.join } end end end set_state :on end
green()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 20 def green @strips[:g] end
kill_crazy()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 86 def kill_crazy @crazy_lock.synchronize do if @crazy_thread @crazy_thread.kill @crazy_thread = nil end end end
off()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 27 def off if on? kill_crazy @strips.values.each { |strip| strip.off } set_state :off end end
on()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 43 def on set_color 255, 255, 255 end
on?()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 39 def on? color.reduce(:+) != 0 end
random()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 69 def random set_color 3.times.map { rand Dimmer::MAX_LEVEL } end
red()
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 17 def red @strips[:r] end
set_color(*args)
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 47 def set_color(*args) kill_crazy args=args[0] if args.size == 1 and args[0].is_a? Array if args.size == 3 @strips[:r].fade_to args[0] @strips[:g].fade_to args[1] @strips[:b].fade_to args[2] set_state args.reduce(:+) == 0 ? :off : :on end end
set_power(value=50)
click to toggle source
# File lib/domotics/core/element/rgb_strip.rb, line 58 def set_power(value=50) return unless value.is_a? Integer value=100 if value>100 value=0 if value<0 if state == :on set_color color.map { |c| c * Dimmer::MAX_LEVEL * value / color.max / 100 } else set_color 3.times.map { Dimmer::MAX_LEVEL * value / 100 } end end