Sha256: b183913b07aa636e94c080ea7cc34f1a66381c64518502bd32b77d8112e02a02

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

# -*- coding: utf-8 -*-
require 'smalruby/hardware'

module Smalruby
  module Hardware
    # ボタンを表現するクラス
    class Button < Dino::Components::Button
      def initialize(options)
        @using_pullup = true
        super(board: world.board, pin: Pin.smalruby_to_dino(options[:pin]),
              pullup: true)
      end

      # プルアップ抵抗を使わない
      def not_use_pullup
        @using_pullup = false
        board.set_pullup(pin, false)
      end

      def stop
        @board.remove_digital_hardware(self)
      end

      def up?
        @using_pullup ? @state == DOWN : @state == UP
      end

      alias_method :on?, :up?

      def down?
        !up?
      end

      alias_method :off?, :down?

      private

      def after_initialize(options = {})
        super(options)

        s_pin = Pin.dino_to_smalruby(pin)
        down { world.button_changed(s_pin, (@using_pullup ? :up : :down)) }
        up { world.button_changed(s_pin, (@using_pullup ? :down : :up)) }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
smalruby-0.0.32-x86-mingw32 lib/smalruby/hardware/button.rb
smalruby-0.0.32 lib/smalruby/hardware/button.rb
smalruby-0.0.31-x86-mingw32 lib/smalruby/hardware/button.rb
smalruby-0.0.31 lib/smalruby/hardware/button.rb
smalruby-0.0.30-x86-mingw32 lib/smalruby/hardware/button.rb
smalruby-0.0.30 lib/smalruby/hardware/button.rb