Class: Artoo::Adaptors::Raspi
- Inherits:
-
Adaptor
- Object
- Adaptor
- Artoo::Adaptors::Raspi
- Includes:
- IO
- Defined in:
- lib/artoo/adaptors/raspi.rb
Overview
Connect to a Raspberry Pi GPIO
Constant Summary collapse
- PINS =
{ 3 => {:rev1 => 0, :rev2 => 2}, 5 => {:rev1 => 1, :rev2 => 3}, 7 => 4, 8 => 14, 10 => 15, 11 => 17, 12 => 18, 13 => {:rev1 => 21, :rev2 => 27}, 15 => 22, 16 => 23, 18 => 24, 19 => 10, 21 => 9, 22 => 25, 23 => 11, 24 => 8, 26 => 7, }
Instance Attribute Summary collapse
-
#board_version ⇒ Object
readonly
Returns the value of attribute board_version.
-
#device ⇒ Object
readonly
Returns the value of attribute device.
-
#i2c ⇒ Object
readonly
Returns the value of attribute i2c.
-
#pins ⇒ Object
readonly
Returns the value of attribute pins.
-
#pwm_pins ⇒ Object
readonly
Returns the value of attribute pwm_pins.
Instance Method Summary collapse
- #close_all_raspi_pins ⇒ Object
-
#connect ⇒ Boolean
Creates a connection with device.
-
#digital_read(pin) ⇒ Object
GPIO - digital interface.
- #digital_write(pin, val) ⇒ Object
-
#disconnect ⇒ Boolean
Closes connection with device.
- #firmware_name ⇒ Object
- #i2c_read(len) ⇒ Object
-
#i2c_start(address) ⇒ Object
i2c.
- #i2c_write(*data) ⇒ Object
-
#method_missing(method_name, *arguments, &block) ⇒ Object
Uses method missing to call device actions.
- #pwm_write(pin, val) ⇒ Object
- #release_all_pwm_pins ⇒ Object
- #release_pwm(pin) ⇒ Object
- #version ⇒ Object
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *arguments, &block) ⇒ Object
Uses method missing to call device actions
112 113 114 |
# File 'lib/artoo/adaptors/raspi.rb', line 112 def method_missing(method_name, *arguments, &block) device.send(method_name, *arguments, &block) end |
Instance Attribute Details
#board_version ⇒ Object (readonly)
Returns the value of attribute board_version.
33 34 35 |
# File 'lib/artoo/adaptors/raspi.rb', line 33 def board_version @board_version end |
#device ⇒ Object (readonly)
Returns the value of attribute device.
33 34 35 |
# File 'lib/artoo/adaptors/raspi.rb', line 33 def device @device end |
#i2c ⇒ Object (readonly)
Returns the value of attribute i2c.
33 34 35 |
# File 'lib/artoo/adaptors/raspi.rb', line 33 def i2c @i2c end |
#pins ⇒ Object (readonly)
Returns the value of attribute pins.
33 34 35 |
# File 'lib/artoo/adaptors/raspi.rb', line 33 def pins @pins end |
#pwm_pins ⇒ Object (readonly)
Returns the value of attribute pwm_pins.
33 34 35 |
# File 'lib/artoo/adaptors/raspi.rb', line 33 def pwm_pins @pwm_pins end |
Instance Method Details
#close_all_raspi_pins ⇒ Object
106 107 108 |
# File 'lib/artoo/adaptors/raspi.rb', line 106 def close_all_raspi_pins pins.each_value { |pin| pin.close } end |
#connect ⇒ Boolean
Creates a connection with device
37 38 39 40 41 42 |
# File 'lib/artoo/adaptors/raspi.rb', line 37 def connect @pins = {} if @pins.nil? @pwm_pins = {} if @pwm_pins.nil? @board_version = `cat /proc/cpuinfo | grep Revision`.split.last.unpack("CCCC").last super end |
#digital_read(pin) ⇒ Object
GPIO - digital interface
79 80 81 82 83 |
# File 'lib/artoo/adaptors/raspi.rb', line 79 def digital_read(pin) release_pwm(pin) if (pwm_used? pin) pin = raspi_pin(pin, "r") pin.digital_read end |
#digital_write(pin, val) ⇒ Object
85 86 87 88 89 |
# File 'lib/artoo/adaptors/raspi.rb', line 85 def digital_write(pin, val) release_pwm(pin) if (pwm_used? pin) pin = raspi_pin(pin, "w") pin.digital_write(val) end |
#disconnect ⇒ Boolean
Closes connection with device
46 47 48 49 50 |
# File 'lib/artoo/adaptors/raspi.rb', line 46 def disconnect release_all_pwm_pins close_all_raspi_pins super end |
#firmware_name ⇒ Object
52 53 54 |
# File 'lib/artoo/adaptors/raspi.rb', line 52 def firmware_name "Raspberry Pi" end |
#i2c_read(len) ⇒ Object
74 75 76 |
# File 'lib/artoo/adaptors/raspi.rb', line 74 def i2c_read len @i2c.read len end |
#i2c_start(address) ⇒ Object
i2c
61 62 63 64 65 66 67 68 |
# File 'lib/artoo/adaptors/raspi.rb', line 61 def i2c_start address if @board_version >= 100 i2c_location = "/dev/i2c-1" else i2c_location = "/dev/i2c-0" end @i2c = I2c.new i2c_location, address end |
#i2c_write(*data) ⇒ Object
70 71 72 |
# File 'lib/artoo/adaptors/raspi.rb', line 70 def i2c_write *data @i2c.write *data end |
#pwm_write(pin, val) ⇒ Object
91 92 93 94 |
# File 'lib/artoo/adaptors/raspi.rb', line 91 def pwm_write(pin, val) pin = pwm_pin(pin) pin.pwm_write(val) end |
#release_all_pwm_pins ⇒ Object
102 103 104 |
# File 'lib/artoo/adaptors/raspi.rb', line 102 def release_all_pwm_pins pwm_pins.each_value { |pwm_pin| pwm_pin.release } end |
#release_pwm(pin) ⇒ Object
96 97 98 99 100 |
# File 'lib/artoo/adaptors/raspi.rb', line 96 def release_pwm(pin) pin = translate_pin(pin) pwm_pins[pin].release pwm_pins[pin] = nil end |