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