Class: Phidgets::Servo

Inherits:
Object
  • Object
show all
Includes:
Common
Defined in:
lib/phidgets-ffi/servo.rb

Overview

This class represents a PhidgetServo.

Defined Under Namespace

Classes: ServoServos

Constant Summary collapse

Klass =
Phidgets::FFI::CPhidgetServo

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Common

#attached?, #attached_to_server?, attributes, #close, #detached?, #detached_to_server?, device_class, #device_class, device_id, #id, #initialize, #label, #label=, #name, #on_attach, #on_detach, #on_error, #on_server_connect, #on_server_disconnect, #on_sleep, #on_wake, #serial_number, #server_address, server_address, #server_id, server_id, server_status, #type, #version, #wait_for_attachment

Instance Attribute Details

#attributesObject (readonly)

The attributes of a PhidgetServo



16
17
18
# File 'lib/phidgets-ffi/servo.rb', line 16

def attributes
  @attributes
end

#servosServoServos (readonly)

Collection of servo motors

Returns:



11
12
13
# File 'lib/phidgets-ffi/servo.rb', line 11

def servos
  @servos
end

Instance Method Details

#on_position_change(obj = nil, &block) ⇒ Boolean

Sets a position change handler callback function. This is called when a the servo position has changed.

As this runs in it’s own thread, be sure that all errors are properly handled or the thread will halt and not fire any more.

Examples:

servo.on_position_change do |motor, position, obj|
  puts "Moving servo #{motor.index} to #{position}"
end

Parameters:

  • obj (String) (defaults to: nil)

    Object to pass to the callback function. This is optional.

  • Block (Proc)

    When the callback is executed, the device and object are yielded to this block.

Returns:

  • (Boolean)

    returns true or raises an error



32
33
34
35
36
37
38
# File 'lib/phidgets-ffi/servo.rb', line 32

def on_position_change(obj=nil, &block)
  @on_position_change_obj = obj
  @on_position_change = Proc.new { |device, obj_ptr, index, position|
    yield self, @servos[index], position, object_for(obj_ptr)
  }
  Klass.set_OnPositionChange_Handler(@handle, @on_position_change, pointer_for(obj))
end