Class: Denko::DigitalIO::RotaryEncoder
Instance Attribute Summary collapse
#callback_mutex
#pin, #pins, #proxies
#board
Instance Method Summary
collapse
#add_callback, #callbacks, #initialize, #remove_callback, #update
#initialize, #state
#before_initialize, #convert_pins, #proxy_pin, #proxy_states, #require_pin, #require_pins
#initialize, #micro_delay
Instance Attribute Details
#reversed ⇒ Object
Returns the value of attribute reversed.
30
31
32
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 30
def reversed
@reversed
end
|
Instance Method Details
#after_initialize(options = {}) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 12
def after_initialize(options={})
super(options)
self.steps_per_revolution = options[:steps_per_revolution] || 30
@reverse = false
self.state = { steps: 0, angle: 0 }
@reading = { steps: 0, angle: 0, change: 0}
@divider = options[:divider] || 1
clock.listen(@divider)
data.listen(@divider)
observe_pins
reset
end
|
#angle ⇒ Object
44
45
46
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 44
def angle
state[:angle]
end
|
#initialize_pins(options = {}) ⇒ Object
7
8
9
10
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 7
def initialize_pins(options={})
proxy_pin :clock, DigitalIO::Input
proxy_pin :data, DigitalIO::Input
end
|
#reset ⇒ Object
52
53
54
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 52
def reset
self.state = {steps: 0, angle: 0}
end
|
#reverse ⇒ Object
32
33
34
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 32
def reverse
@reversed = !@reversed
end
|
#steps ⇒ Object
48
49
50
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 48
def steps
state[:steps]
end
|
#steps_per_revolution ⇒ Object
36
37
38
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 36
def steps_per_revolution
(360 / @degrees_per_step).to_i
end
|
#steps_per_revolution=(step_count) ⇒ Object
40
41
42
|
# File 'lib/denko/digital_io/rotary_encoder.rb', line 40
def steps_per_revolution=(step_count)
@degrees_per_step = 360.to_f / step_count
end
|