class Artoo::Drivers::MakeyButton

MakeyButton driver behaviors

Constants

COMMANDS
DOWN
UP

Attributes

data[RW]

Public Class Methods

new(params={}) click to toggle source
Calls superclass method
# File lib/artoo/drivers/makey_button.rb, line 14
def initialize(params={})
  super

  @data = []
end

Public Instance Methods

is_pressed?() click to toggle source

@return [Boolean] True if pressed

# File lib/artoo/drivers/makey_button.rb, line 21
def is_pressed?
  (@pressed_val == 1) ? true : false
end
start_driver() click to toggle source
Calls superclass method
# File lib/artoo/drivers/makey_button.rb, line 25
def start_driver
  @pressed_val = 0

  every(0.1) do
    new_value = connection.digital_read(pin)
    unless new_value.nil?
      @data << new_value
      @data.shift if @data.size > 5
      update(new_value)
    end
  end

  super
end

Private Instance Methods

average_data() click to toggle source

Averages data received

# File lib/artoo/drivers/makey_button.rb, line 55
def average_data
  return 0 unless @data.any?
  @data.inject(:+) / @data.size.to_f
end
update(new_val) click to toggle source

Publishes events according to the button feedback

# File lib/artoo/drivers/makey_button.rb, line 42
def update(new_val)
  if average_data <= 0.5 and not is_pressed?
    @pressed_val = 1
    publish(event_topic_name("update"), "push", new_val)
    publish(event_topic_name("push"), new_val)
  elsif average_data > 0.5 and is_pressed?
    @pressed_val = 0
    publish(event_topic_name("update"), "release", new_val)
    publish(event_topic_name("release"), new_val)
  end
end