Class: Beaglebone::AINPin

Inherits:
Object
  • Object
show all
Defined in:
lib/beaglebone/ain.rb

Overview

Object Oriented AIN Implementation. This treats the pin as an object.

Instance Method Summary collapse

Constructor Details

#initialize(pin) ⇒ AINPin

Initialize a Analog pin Return’s an AINPin object

Examples:

p9_33 = AINPin.new(:P9_33)


362
363
364
# File 'lib/beaglebone/ain.rb', line 362

def initialize(pin)
  @pin = pin
end

Instance Method Details

#disable_analog_pinObject

Disable analog pin



473
474
475
# File 'lib/beaglebone/ain.rb', line 473

def disable_analog_pin
  AIN::disable_analog_pin(@pin)
end

#readInteger

Read from an analog pin

Examples:

p9_33 = AINPin.new(:P9_33)
p9_33.read => 1799

Returns:

  • (Integer)

    value in millivolts



373
374
375
# File 'lib/beaglebone/ain.rb', line 373

def read
  AIN::read(@pin)
end

#run_on_change(callback, mv_change = 10, interval = 0.01, repeats = nil) ⇒ Object

Runs a callback after voltage changes by specified amount. This creates a new thread that runs in the background and polls at specified interval.

This method should take 4 arguments: the pin, the previous voltage, the current voltage, and the counter

Examples:

# This polls every 0.1 seconds and will run after a 10mv change is detected
callback = lambda { |pin, mv_last, mv, count| puts "[#{count}] #{pin} #{mv_last} -> #{mv}" }
p9_33 = AINPin.new(:P9_33)
p9_33.run_on_change(callback, 10, 0.1)

Parameters:

  • callback

    A method to call when the change is detected

  • mv_change (defaults to: 10)

    an integer specifying the required change in mv

  • interval (defaults to: 0.01)

    a number representing the wait time between polling

  • repeats (defaults to: nil)

    is optional and specifies the number of times the callback will be run



391
392
393
# File 'lib/beaglebone/ain.rb', line 391

def run_on_change(callback, mv_change=10, interval=0.01, repeats=nil)
  AIN::run_on_change(callback, @pin, mv_change, interval, repeats)
end

#run_on_threshold(callback, mv_lower, mv_upper, mv_reset = 10, interval = 0.01, repeats = nil) ⇒ Object

Runs a callback after voltage changes beyond a certain threshold. This creates a new thread that runs in the background and polls at specified interval. When the voltage crosses the specified thresholds the callback is run.

Examples:

# This polls every 0.01 seconds and will run after a the voltage crosses 400mv or 1200mv.
# Voltage will have to cross a range by at least 5mv to prevent rapidly triggering events
callback = lambda { |pin, mv_last, mv, state_last, state, count|
  puts "[#{count}] #{pin} #{state_last} -> #{state}     #{mv_last} -> #{mv}"
}
p9_33 = AINPin.new(:P9_33)
p9_33.run_on_threshold(callback, 400, 1200, 5, 0.01)

Parameters:

  • callback

    A method to call when the change is detected. This method should take 6 arguments: the pin, the previous voltage, the current voltage, the previous state, the current state, and the counter

  • mv_lower

    an integer specifying the lower threshold voltage

  • mv_upper

    an integer specifying the upper threshold voltage

  • mv_reset (defaults to: 10)

    an integer specifying the range in mv required to reset the threshold trigger

  • interval (defaults to: 0.01)

    a number representing the wait time between polling

  • repeats (defaults to: nil)

    is optional and specifies the number of times the callback will be run



421
422
423
# File 'lib/beaglebone/ain.rb', line 421

def run_on_threshold(callback, mv_lower, mv_upper, mv_reset=10, interval=0.01, repeats=nil)
  AIN::run_on_threshold(callback, @pin, mv_lower, mv_upper, mv_reset, interval, repeats)
end

#run_once_on_change(callback, mv_change = 10, interval = 0.01) ⇒ Object

Runs a callback once after specified change in voltage detected Convenience method for run_on_change



397
398
399
# File 'lib/beaglebone/ain.rb', line 397

def run_once_on_change(callback, mv_change=10, interval=0.01)
  AIN::run_once_on_change(callback, @pin, mv_change, interval)
end

#run_once_on_threshold(callback, mv_lower, mv_upper, mv_reset = 10, interval = 0.01) ⇒ Object

Runs a callback once after voltage crosses a specified threshold. Convenience method for run_on_threshold



428
429
430
# File 'lib/beaglebone/ain.rb', line 428

def run_once_on_threshold(callback, mv_lower, mv_upper, mv_reset=10, interval=0.01)
  AIN::run_once_on_threshold(callback, @pin, mv_lower, mv_upper, mv_reset, interval)
end

#stop_waitObject

Stops any threads waiting for data on this pin



468
469
470
# File 'lib/beaglebone/ain.rb', line 468

def stop_wait
  AIN::stop_wait(@pin)
end

#wait_for_change(mv_change, interval, mv_last = nil) ⇒ Object

Returns when voltage changes by specified amount

Examples:

# This will poll every P9_33 every 0.01 seconds until 10mv of change is detected
# This method will return the initial reading, final reading, and how many times it polled
p9_33 = AINPin.new(:P9_33)
p9_33.wait_for_change(10, 0.01) => [ 1200, 1210, 4]

Parameters:

  • mv_change

    an integer specifying the required change in mv

  • interval

    a number representing the wait time between polling

  • mv_last (defaults to: nil)

    is optional and specifies the voltage to use as the initial point to measure change



463
464
465
# File 'lib/beaglebone/ain.rb', line 463

def wait_for_change(mv_change, interval, mv_last=nil)
  AIN::wait_for_change(@pin, mv_change, interval, mv_last)
end

#wait_for_threshold(mv_lower, mv_upper, mv_reset = 10, interval = 0.01, mv_last = nil, state_last = nil) ⇒ Object

Returns when voltage changes by specified amount

Examples:

# This polls every 0.01 seconds and will run after a the voltage crosses 400mv or 1200mv.
# Voltage will have to cross a range by at least 5mv to prevent rapidly triggering events
callback = lambda { |pin, mv_last, mv, state_last, state, count|
  puts "[#{count}] #{pin} #{state_last} -> #{state}     #{mv_last} -> #{mv}"
}
p9_33 = AINPin.new(:P9_33)
p9_33.wait_for_threshold(400, 1200, 5, 0.01)

Parameters:

  • mv_lower

    an integer specifying the lower threshold voltage

  • mv_upper

    an integer specifying the upper threshold voltage

  • mv_reset (defaults to: 10)

    an integer specifying the range in mv required to reset the threshold trigger

  • interval (defaults to: 0.01)

    a number representing the wait time between polling

  • mv_last (defaults to: nil)

    is optional and specifies the voltage to use as the initial point to measure change

  • state_last (defaults to: nil)

    is optional and specifies the state to use as the initial state to watch change



448
449
450
# File 'lib/beaglebone/ain.rb', line 448

def wait_for_threshold(mv_lower, mv_upper, mv_reset=10, interval=0.01, mv_last=nil, state_last=nil)
  AIN::wait_for_threshold(@pin, mv_lower, mv_upper, mv_reset, interval, mv_last, state_last)
end