class Smalruby::Hardware::RgbLedAnode

RGB LED(アノード)を表現するクラス

Public Class Methods

new(options) click to toggle source
Calls superclass method
# File lib/smalruby/hardware/rgb_led_anode.rb, line 7
def initialize(options)
  pin = Pin.smalruby_to_smalrubot(options[:pin])
  case pin
  when 3..6
    super(board: world.board, pin: [3, 5, 6, 4])
  when 9..12
    super(board: world.board, pin: [9, 10, 11, 12])
  else
    fail "RGB LED(anode)のピン番号が間違っています: {options[:pin]}"
  end
end

Public Instance Methods

color=(val) click to toggle source

RGB LEDを指定した色に光らせる

# File lib/smalruby/hardware/rgb_led_anode.rb, line 20
def color=(val)
  color = Color.smalruby_to_dxruby(val)
  analog_write(pins[0], calc_value(color[0]))
  analog_write(pins[1], calc_value(color[1]))
  analog_write(pins[2], calc_value(color[2]))
  digital_write(pins[3], Smalrubot::Board::HIGH)
end
stop() click to toggle source
# File lib/smalruby/hardware/rgb_led_anode.rb, line 33
def stop
  turn_off
end
turn_off() click to toggle source

RGB LEDをオフにする

# File lib/smalruby/hardware/rgb_led_anode.rb, line 29
def turn_off
  digital_write(pins[3], Smalrubot::Board::LOW)
end

Private Instance Methods

after_initialize(_ = {}) click to toggle source
# File lib/smalruby/hardware/rgb_led_anode.rb, line 39
def after_initialize(_ = {})
  set_pin_mode(pins[3], :out)
  turn_off
end
calc_value(value) click to toggle source
# File lib/smalruby/hardware/rgb_led_anode.rb, line 44
def calc_value(value)
  v = Smalrubot::Board::HIGH - value
  if v < Smalrubot::Board::LOW
    Smalrubot::Board::LOW
  elsif v > Smalrubot::Board::HIGH
    Smalrubot::Board::HIGH
  else
    v
  end
end