class Apa102Rbpi::Apa102

Attributes

brightness[RW]
end_frame[R]
interface[R]
led_frame_rgb_offsets[RW]
led_frames[RW]
num_leds[R]
simulate[R]
spi_hz[RW]
start_frame[R]

Public Class Methods

new() click to toggle source
# File lib/apa102_rbpi/apa102.rb, line 7
def initialize
  @num_leds = 1

  # default brightness, must be within 0-31
  @brightness = 31

  # some strips may have different led frame specs
  # set offsets if using a non-default strip
  # offset:    0      1    2    3
  # frame = [header|blue|green|red],
  @led_frame_rgb_offsets = {
    red: 3,
    green: 2,
    blue: 1
  }
  @spi_hz = 8000000
  @simulate = false

  @interface = PiPiper::Spi
  @start_frame = [0x00] * 4
  @end_frame = calculate_end_frame

  @led_frames = []
end

Public Instance Methods

num_leds=(num) click to toggle source
# File lib/apa102_rbpi/apa102.rb, line 41
def num_leds=(num)
  @num_leds = num
  @end_frame = calculate_end_frame
end
print() click to toggle source
show!() click to toggle source
# File lib/apa102_rbpi/apa102.rb, line 46
def show!
  @interface.begin do |s|
    s.clock(@spi_hz)
    s.write(@start_frame + @led_frames + @end_frame)
  end
end
simulate=(bool) click to toggle source
# File lib/apa102_rbpi/apa102.rb, line 32
def simulate=(bool)
  @simulate = bool
  if @simulate
    @interface = ::Apa102Rbpi::SpiSimulator
  else
    @interface = PiPiper::Spi
  end
end

Private Instance Methods

calculate_end_frame() click to toggle source
# File lib/apa102_rbpi/apa102.rb, line 59
def calculate_end_frame
  [0x00] * (@num_leds / 2.0).ceil
end