class Neoclock::Clock

Attributes

lights[R]

Public Class Methods

minute_block(pin, figure, ground) click to toggle source
# File lib/neoclock/clock.rb, line 45
def self.minute_block pin, figure, ground
  h = {}

  h[pin] = figure

  before = pin - 1
  if before < 0
    before = Config.instance.config.minutes['pins'] - 1
  end
  h[before] = figure

  after = pin + 1
  if after >= Config.instance.config.minutes['pins']
    after = pin - Config.instance.config.minutes['pins'] + 1
  end
  h[after] = figure

  h
end
new(options = {}) click to toggle source
# File lib/neoclock/clock.rb, line 5
def initialize options = {}
  @config = Config.instance.config

  @figure = Config.instance.colours[@config.colours['figure']]
  @ground = Config.instance.colours[@config.colours['ground']]

  @total_size = @config.minutes['pins'] + @config.hours['pins']

  @rings = PixelPi::Leds.new \
    @total_size,
    @config.led['pin'],
    frequency: @config.led['freq'],
    dma: @config.led['dma'],
    brightness: @config.led['brightness'],
    invert: @config.led['invert']
end

Public Instance Methods

time() click to toggle source
# File lib/neoclock/clock.rb, line 22
def time
  dt = DateTime.now
  @lights = []

  minutes = ((@config.minutes['pins'] / 60.0) * dt.minute).round
  hours = (dt.hour % 12) + @config.minutes['pins']

  @total_size.times do
    @lights.push @ground
  end

  @lights[hours] = @figure
  Clock.minute_block(minutes, @figure, @ground).each_pair do |index, colour|
    @lights[index] = colour
  end

  @lights.each_with_index do |colour, i|
    @rings[i] = PixelPi::Color *colour
  end

  @rings.show
end