Sha256: ec34cce5be6d77d0b5dcba65aae43fb93add322cdf9c53b40272996850baee09

Contents?: true

Size: 1.21 KB

Versions: 20

Compression:

Stored size: 1.21 KB

Contents

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

module Smalruby
  module Hardware
    # 汎用的なセンサーを表現するクラス
    class Sensor < Dino::Components::Sensor
      # デフォルトのセンサーの値に変化があったかどうかをチェックする閾値
      DEFAULT_THRESHOLD = 32

      attr_reader :value
      attr_accessor :threshold

      def initialize(options)
        super(board: world.board, pin: Pin.smalruby_to_dino(options[:pin]))
      end

      def stop
        @board.remove_analog_hardware(self)
      end

      private

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

        @value = 0
        @threshold = options[:threshold] || DEFAULT_THRESHOLD

        start_receiving_data
      end

      def start_receiving_data
        prev_data = 0
        when_data_received { |data|
          begin
            @value = data = data.to_i
            if (data - prev_data).abs >= @threshold ||
                (prev_data != data && (data == 0 || data >= 1023))
              world.sensor_changed(pin, data)
              prev_data = data
            end
          rescue
            Util.print_exception($ERROR_INFO)
          end
        }
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
smalruby-0.0.32-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.31-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.31 lib/smalruby/hardware/sensor.rb
smalruby-0.0.30-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.30 lib/smalruby/hardware/sensor.rb
smalruby-0.0.29-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.29 lib/smalruby/hardware/sensor.rb
smalruby-0.0.28-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.28 lib/smalruby/hardware/sensor.rb
smalruby-0.0.27-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.27 lib/smalruby/hardware/sensor.rb
smalruby-0.0.26-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.26 lib/smalruby/hardware/sensor.rb
smalruby-0.0.25-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.25 lib/smalruby/hardware/sensor.rb
smalruby-0.0.24-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.24 lib/smalruby/hardware/sensor.rb
smalruby-0.0.23-x86-mingw32 lib/smalruby/hardware/sensor.rb
smalruby-0.0.23 lib/smalruby/hardware/sensor.rb