Class: Artoo::Adaptors::Raspi

Inherits:
Adaptor
  • Object
show all
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

Instance Method Summary collapse

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

See Also:



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_versionObject (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

#deviceObject (readonly)

Returns the value of attribute device.



33
34
35
# File 'lib/artoo/adaptors/raspi.rb', line 33

def device
  @device
end

#i2cObject (readonly)

Returns the value of attribute i2c.



33
34
35
# File 'lib/artoo/adaptors/raspi.rb', line 33

def i2c
  @i2c
end

#pinsObject (readonly)

Returns the value of attribute pins.



33
34
35
# File 'lib/artoo/adaptors/raspi.rb', line 33

def pins
  @pins
end

#pwm_pinsObject (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_pinsObject



106
107
108
# File 'lib/artoo/adaptors/raspi.rb', line 106

def close_all_raspi_pins
  pins.each_value { |pin| pin.close }
end

#connectBoolean

Creates a connection with device

Returns:

  • (Boolean)


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

#disconnectBoolean

Closes connection with device

Returns:

  • (Boolean)


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_nameObject



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_pinsObject



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

#versionObject



56
57
58
# File 'lib/artoo/adaptors/raspi.rb', line 56

def version
  Artoo::Raspi::VERSION
end