class Artoo::Adaptors::Raspi
Connect to a Raspberry Pi GPIO @see device documentation for more information
Constants
- PINS
Attributes
board_version[R]
device[R]
i2c[R]
pins[R]
pwm_pins[R]
Public Instance Methods
close_all_raspi_pins()
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 106 def close_all_raspi_pins pins.each_value { |pin| pin.close } end
connect()
click to toggle source
Creates a connection with device @return [Boolean]
Calls superclass method
# 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)
click to toggle source
GPIO - digital interface
# 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)
click to toggle source
# 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()
click to toggle source
Closes connection with device @return [Boolean]
Calls superclass method
# File lib/artoo/adaptors/raspi.rb, line 46 def disconnect release_all_pwm_pins close_all_raspi_pins super end
firmware_name()
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 52 def firmware_name "Raspberry Pi" end
i2c_read(len)
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 74 def i2c_read len @i2c.read len end
i2c_start(address)
click to toggle source
i2c
# 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)
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 70 def i2c_write *data @i2c.write *data end
method_missing(method_name, *arguments, &block)
click to toggle source
Uses method missing to call device actions @see device documentation
# File lib/artoo/adaptors/raspi.rb, line 112 def method_missing(method_name, *arguments, &block) device.send(method_name, *arguments, &block) end
pwm_write(pin, val)
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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
version()
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 56 def version Artoo::Raspi::VERSION end
Private Instance Methods
pwm_pin(pin)
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 128 def pwm_pin(pin) pin = translate_pin(pin) pwm_pins[pin] = PwmPin.new(pin) if pwm_pins[pin].nil? pwm_pins[pin] end
pwm_used?(pin)
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 118 def pwm_used?(pin) (pwm_pins[translate_pin(pin)].nil?) ? false : true end
raspi_pin(pin, mode)
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 122 def raspi_pin(pin, mode) pin = translate_pin pin pins[pin] = DigitalPin.new(pin, mode) if pins[pin].nil? || pins[pin].mode != mode pins[pin] end
translate_pin(pin)
click to toggle source
# File lib/artoo/adaptors/raspi.rb, line 134 def translate_pin pin begin p = PINS.fetch(pin.to_i) if p.class == Hash if @board_version >= 54 return p[:rev2] else return p[:rev1] end else return p end rescue Exception => e raise "Not a valid pin" end end