class RapiroWrapper::Body
Controll class for RAPIRO
Public Class Methods
new(device = '/dev/ttyAMA0')
click to toggle source
# File lib/rapiro_wrapper/body.rb, line 4 def initialize(device = '/dev/ttyAMA0') @commander = RapiroWrapper::Commander.new(device) servo_class = RapiroWrapper::ServoMotor.find_servos @servos = servo_class.inject({}) do |hash, klass| class_name = klass.to_s snake_case = class_name.gsub(/::/, '/') .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr('-', '_').downcase hash[snake_case.split('/').last] = klass hash end @servos['eyes'] = RapiroWrapper::Eyes @servos.each do |s, k| self.class.class_eval <<-EOF def #{s}=(val) @#{s} = #{k}.new(val) end def #{s} @#{s} end EOF instance_variable_set('@'.concat(s).to_sym, k.new) end end
Public Instance Methods
execute!(duration = 10)
click to toggle source
# File lib/rapiro_wrapper/body.rb, line 39 def execute!(duration = 10) @commander.write(sequences(duration)) end
sequences(duration = 10)
click to toggle source
# File lib/rapiro_wrapper/body.rb, line 32 def sequences(duration = 10) @commander.sequences( @servos.keys.map { |k| instance_variable_get('@'.concat(k).to_sym) }, duration ) end