Sha256: 997761bcf7638abe18179153bce05196da37b404fa3adc28095b576311a8ceed

Contents?: true

Size: 956 Bytes

Versions: 7

Compression:

Stored size: 956 Bytes

Contents

require 'artoo/drivers/driver'

module Artoo
  module Drivers
    # Button driver behaviors for Firmata
    class Button < Driver
      DOWN = 1
      UP = 0

      def is_pressed?
        (@is_pressed ||= false) == true
      end

      def start_driver
        listener = ->(value) { update(value) }
        connection.on("digital-read-#{pin}", listener)
        connection.set_pin_mode(pin, Firmata::Board::INPUT)
        connection.toggle_pin_reporting(pin)

        every(interval) do
          connection.read_and_process
        end

        super
      end

      def update(value)
        if value == DOWN
          @is_pressed = true
          publish(event_topic_name("update"), "push", value)
          publish(event_topic_name("push"), value)
        else
          @is_pressed = false
          publish(event_topic_name("update"), "release", value)
          publish(event_topic_name("release"), value)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
artoo-0.4.0 lib/artoo/drivers/button.rb
artoo-0.3.0 lib/artoo/drivers/button.rb
artoo-0.2.0 lib/artoo/drivers/button.rb
artoo-0.1.3 lib/artoo/drivers/button.rb
artoo-0.1.2 lib/artoo/drivers/button.rb
artoo-0.1.1 lib/artoo/drivers/button.rb
artoo-0.1.0 lib/artoo/drivers/button.rb