Class: OnionOmega::Stepper

Inherits:
Object
  • Object
show all
Defined in:
lib/onion_omega/stepper.rb

Instance Method Summary collapse

Constructor Details

#initialize(range:, pins: [0, 1, 2, 3], half_stepping: false, persist_to_file: nil, gpio: GPIO.new) ⇒ Stepper

Returns a new instance of Stepper.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/onion_omega/stepper.rb', line 6

def initialize(
  range:,
  pins: [0, 1, 2, 3],
  half_stepping: false,
  persist_to_file: nil,
  gpio: GPIO.new
)
  @range = range
  @pins = pins
  @sequencer = StepperSequencer.new(
    number_of_pins: @pins.count,
    half_stepping:  half_stepping
  )
  @file = persist_to_file
  @current_step = (@file && File.exists?(@file)) ? File.read(@file).to_i : 0
  @gpio = gpio
  initialise_gpio
end

Instance Method Details

#backward(steps = 1) ⇒ Object



29
30
31
# File 'lib/onion_omega/stepper.rb', line 29

def backward(steps=1)
  steps.times { step(-1) }
end

#forward(steps = 1) ⇒ Object



25
26
27
# File 'lib/onion_omega/stepper.rb', line 25

def forward(steps=1)
  steps.times { step(1) }
end

#resetObject



43
44
45
# File 'lib/onion_omega/stepper.rb', line 43

def reset
  set_percentage 0
end

#set_percentage(percentage) ⇒ Object



33
34
35
36
37
38
39
40
41
# File 'lib/onion_omega/stepper.rb', line 33

def set_percentage(percentage)
  desired_step = (percentage * @range).round
  steps = desired_step - @current_step
  if steps > 0
    steps.times { forward }
  elsif steps < 0
    steps.abs.times { backward }
  end
end