Class: PiPiper::I2C

Inherits:
Object
  • Object
show all
Defined in:
lib/pi_piper/i2c.rb

Overview

I2C support

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeI2C



8
9
10
# File 'lib/pi_piper/i2c.rb', line 8

def initialize
  PiPiper.driver.i2c_begin
end

Class Method Details

.begin(&block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pi_piper/i2c.rb', line 16

def self.begin(&block)
  instance = I2C.new
  begin
    if block.arity > 0
      block.call instance
    else
      instance.instance_exec &block 
    end
  ensure
    instance.end
  end
end

.clock=(clock) ⇒ Object

Raises:

  • (ArgumentError)


29
30
31
32
33
34
# File 'lib/pi_piper/i2c.rb', line 29

def self.clock=(clock)
  valid_clocks = PiPiper.driver.i2c_allowed_clocks
  raise ArgumentError, "Invalid clock rate. Valid clocks are 100 kHz, 399.3610 kHz, 1.666 MHz and 1.689 MHz" unless valid_clocks.include? clock

  PiPiper.driver.i2c_set_clock clock
end

Instance Method Details

#endObject



12
13
14
# File 'lib/pi_piper/i2c.rb', line 12

def end
  PiPiper.driver.i2c_end
end

#read(bytes) ⇒ Object



45
46
47
# File 'lib/pi_piper/i2c.rb', line 45

def read(bytes)
  PiPiper.driver.i2c_read_bytes(bytes)
end

#write(params) ⇒ Object

Raises:

  • (ArgumentError)


36
37
38
39
40
41
42
43
# File 'lib/pi_piper/i2c.rb', line 36

def write(params)
  data = params[:data]
  address = params[:to]

  raise ArgumentError, ":data must be enumerable" unless data.class.include? Enumerable
  PiPiper.driver.i2c_set_address address
  PiPiper.driver.i2c_transfer_bytes data
end