class OnionOmega::StepperSequencer

Attributes

half_stepping[RW]
number_of_pins[RW]

Public Class Methods

new(number_of_pins: 4, half_stepping: false) click to toggle source
# File lib/onion_omega/stepper_sequencer.rb, line 5
def initialize(number_of_pins: 4, half_stepping: false)
  @number_of_pins = number_of_pins
  @half_stepping = half_stepping
end

Public Instance Methods

pins_for_step(step) click to toggle source
# File lib/onion_omega/stepper_sequencer.rb, line 10
def pins_for_step(step)
  @half_stepping ? pins_for_half_step(step) : pins_for_full_step(step)
end

Private Instance Methods

pins_for_full_step(step) click to toggle source
# File lib/onion_omega/stepper_sequencer.rb, line 16
def pins_for_full_step(step)
  @number_of_pins.times.map do |index|
    phase = step % @number_of_pins
    index == phase ? 1 : 0
  end
end
pins_for_half_step(step) click to toggle source
# File lib/onion_omega/stepper_sequencer.rb, line 23
def pins_for_half_step(step)
  phase = step % (@number_of_pins * 2)
  @number_of_pins.times.map do |index|
    case index * 2
    when phase, phase - 1, (phase + 1) % (@number_of_pins * 2)
      1
    else
      0
    end
  end
end