Class: Denko::DigitalIO::RotaryEncoder

Inherits:
Object
  • Object
show all
Includes:
Behaviors::Callbacks, Behaviors::Lifecycle, Behaviors::MultiPin
Defined in:
lib/denko/digital_io/rotary_encoder.rb

Constant Summary

Constants included from Behaviors::Lifecycle

Behaviors::Lifecycle::CALLBACK_METHODS

Instance Attribute Summary

Attributes included from Behaviors::MultiPin

#pin, #pins, #proxies

Attributes included from Behaviors::Component

#board, #params

Instance Method Summary collapse

Methods included from Behaviors::Lifecycle

included

Methods included from Behaviors::Callbacks

#add_callback, #callbacks, #remove_callback, #update

Methods included from Behaviors::MultiPin

#convert_pins, #proxy_pin, #proxy_states, #require_pin, #require_pins

Methods included from Behaviors::Component

#initialize, #micro_delay

Instance Method Details

#angleObject



75
76
77
# File 'lib/denko/digital_io/rotary_encoder.rb', line 75

def angle
  state[:angle]
end

#countObject



79
80
81
# File 'lib/denko/digital_io/rotary_encoder.rb', line 79

def count
  state[:count]
end

#counts_per_revolutionObject



59
60
61
# File 'lib/denko/digital_io/rotary_encoder.rb', line 59

def counts_per_revolution
  @counts_per_revolution ||= params[:counts_per_revolution] || params[:cpr] || 60
end

#debounce_timeObject

PiBoard will use GPIO alerts, default to 1 microsecond debounce time.



42
43
44
# File 'lib/denko/digital_io/rotary_encoder.rb', line 42

def debounce_time
  @debounce_time ||= params[:debounce_time] || 1
end

#degrees_per_countObject



63
64
65
# File 'lib/denko/digital_io/rotary_encoder.rb', line 63

def degrees_per_count
  @degrees_per_count ||= (360 / counts_per_revolution.to_f)
end

#dividerObject

Board will default to 1ms digital listeners.



47
48
49
# File 'lib/denko/digital_io/rotary_encoder.rb', line 47

def divider
  @divider ||= params[:divider] || 1
end

#initialize_pins(params = {}) ⇒ Object



23
24
25
26
# File 'lib/denko/digital_io/rotary_encoder.rb', line 23

def initialize_pins(params={})
  proxy_pin :a, DigitalIO::Input
  proxy_pin :b, DigitalIO::Input
end

#readingObject



71
72
73
# File 'lib/denko/digital_io/rotary_encoder.rb', line 71

def reading
  @reading ||= { count: 0, angle: 0, change: 0 }
end

#resetObject



83
84
85
# File 'lib/denko/digital_io/rotary_encoder.rb', line 83

def reset
  self.state = {count: 0, angle: 0}
end

#reverseObject



55
56
57
# File 'lib/denko/digital_io/rotary_encoder.rb', line 55

def reverse
  @reversed = !@reversed
end

#reversedObject



51
52
53
# File 'lib/denko/digital_io/rotary_encoder.rb', line 51

def reversed
  @reversed ||= false || params[:reversed] || params[:reverse]
end

#stateObject



67
68
69
# File 'lib/denko/digital_io/rotary_encoder.rb', line 67

def state
  @state ||= { count: 0, angle: 0 }
end