class BBB::Components::Servo
Attributes
max_degrees[R]
max_duty[R]
min_duty[R]
period[R]
Public Class Methods
new(options={})
click to toggle source
Min duty and max duty for FS5103B servo duty cycle of 900 to 2100 ms for 120 degrees www.servodatabase.com/servo/feetech/fs5103b
# File lib/BBB/components/servo.rb, line 13 def initialize(options={}) set_options(options) @period = options.fetch(:period, 20e6) @min_duty = options.fetch(:min_duty, 17.9e6) @max_duty = options.fetch(:max_duty, 19.1e6) @max_degrees = options.fetch(:max_degrees, 120) end
Public Instance Methods
activate!()
click to toggle source
# File lib/BBB/components/servo.rb, line 31 def activate! pin.run = 1 end
angle(degrees)
click to toggle source
# File lib/BBB/components/servo.rb, line 23 def angle(degrees) pin.duty = degrees_to_ns(degrees) end
deactivate!()
click to toggle source
# File lib/BBB/components/servo.rb, line 35 def deactivate! pin.run = 0 end
degrees_to_ns(degrees)
click to toggle source
# File lib/BBB/components/servo.rb, line 27 def degrees_to_ns(degrees) degrees / max_degrees.to_f * duty_range + min_duty end
pin()
click to toggle source
# File lib/BBB/components/servo.rb, line 39 def pin pins.first end
Private Instance Methods
after_pin_initialization()
click to toggle source
# File lib/BBB/components/servo.rb, line 49 def after_pin_initialization pin.period = self.period pin.duty = (min_duty + duty_range / 2) pin.run = 1 end
duty_range()
click to toggle source
# File lib/BBB/components/servo.rb, line 45 def duty_range max_duty - min_duty end