module Artoo::Drivers::BidirectionalWithForwardBackwardPins

Public Instance Methods

backward(speed = nil) click to toggle source

Sets movement backward @param [Integer] speed

# File lib/artoo/drivers/motor.rb, line 122
def backward(speed = nil)
  direction(:backward)
  speed ? self.speed(speed) : start
end
backward?() click to toggle source
# File lib/artoo/drivers/motor.rb, line 131
def backward?
  (not forward?)
end
forward(speed = nil) click to toggle source

Sets movement forward @param [Integer] speed

# File lib/artoo/drivers/motor.rb, line 115
def forward(speed = nil)
  direction(:forward)
  speed ? self.speed(speed) : start
end
forward?() click to toggle source
# File lib/artoo/drivers/motor.rb, line 127
def forward?
  @current_direction == :forward
end

Private Instance Methods

change_state(state) click to toggle source
# File lib/artoo/drivers/motor.rb, line 136
def change_state(state)
  @current_state = state
  @current_speed = state.zero? ? 0 : 255
  if state == :high
    direction(@current_direction)
    speed(@current_speed) if speed_pin
  elsif state == :low
    direction(:none)
  end
end
direction(direction) click to toggle source
# File lib/artoo/drivers/motor.rb, line 147
def direction(direction)
  @current_direction = direction
  case direction
  when :forward
    forward_pin_level = :high
    backward_pin_level = :low
  when :backward
    forward_pin_level = :low
    backward_pin_level = :high
  when :none
    forward_pin_level = :low
    backward_pin_level = :low
  end
  
  connection.digital_write(@forward_pin, forward_pin_level)
  connection.digital_write(@backward_pin, backward_pin_level)
end