Class: Artoo::Adaptors::Littlewire

Inherits:
Adaptor
  • Object
show all
Defined in:
lib/artoo/adaptors/littlewire.rb

Overview

Connect to Digispark or Littlewire device using Little Wire protocol

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Littlewire

Returns a new instance of Littlewire.



10
11
12
13
14
15
16
# File 'lib/artoo/adaptors/littlewire.rb', line 10

def initialize(params={})
  super

  params[:additional_params] ||= {}
  @vendor = params[:additional_params][:vendor] || 0x1781
  @product = params[:additional_params][:product] || 0x0c9f
end

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 Littlewire methods



113
114
115
# File 'lib/artoo/adaptors/littlewire.rb', line 113

def method_missing(method_name, *arguments, &block)
  littlewire.send(method_name, *arguments, &block)
end

Instance Attribute Details

#firmware_versionObject (readonly)

Returns the value of attribute firmware_version.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def firmware_version
  @firmware_version
end

#littlewireObject (readonly)

Returns the value of attribute littlewire.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def littlewire
  @littlewire
end

#productObject (readonly)

Returns the value of attribute product.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def product
  @product
end

#usbObject (readonly)

Returns the value of attribute usb.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def usb
  @usb
end

#vendorObject (readonly)

Returns the value of attribute vendor.



8
9
10
# File 'lib/artoo/adaptors/littlewire.rb', line 8

def vendor
  @vendor
end

Instance Method Details

#analog_pin(pin) ⇒ Object



100
101
102
103
104
105
106
107
108
109
# File 'lib/artoo/adaptors/littlewire.rb', line 100

def analog_pin(pin)
  case pin
  when 5
    0
  when 2
    1
  else
    raise "Invalid pin" # TODO: raise exception class
  end
end

#analog_read(pin) ⇒ Object

GPIO - analog interface



58
59
60
# File 'lib/artoo/adaptors/littlewire.rb', line 58

def analog_read(pin)
  littlewire.analog_read(analog_pin(pin)) * 1000.0
end

#connectBoolean

Creates connection with littlewire board

Returns:

  • (Boolean)


20
21
22
23
24
25
# File 'lib/artoo/adaptors/littlewire.rb', line 20

def connect
  require 'littlewire' unless defined?(::LittleWire)
  @littlewire = ::LittleWire.new(connect_to_usb)
  super
  return true
end

#connect_to_usbObject



93
94
95
96
97
98
# File 'lib/artoo/adaptors/littlewire.rb', line 93

def connect_to_usb
  @usb = LIBUSB::Context.new.devices(
    :idVendor  => vendor,
    :idProduct => product
  ).first
end

#digital_read(pin) ⇒ Object

GPIO - digital interface



47
48
49
50
# File 'lib/artoo/adaptors/littlewire.rb', line 47

def digital_read(pin)
  littlewire.digital_write(pin, true)
  littlewire.digital_read(pin)
end

#digital_write(pin, val) ⇒ Object



52
53
54
55
# File 'lib/artoo/adaptors/littlewire.rb', line 52

def digital_write(pin, val)
  littlewire.pin_mode(pin, :output)
  littlewire.digital_write(pin, val)
end

#disconnectBoolean

Closes connection with littlewire board

Returns:

  • (Boolean)


29
30
31
32
# File 'lib/artoo/adaptors/littlewire.rb', line 29

def disconnect
  littlewire.finished
  super
end

#firmware_nameString

Returns name of littlewire board

Returns:

  • (String)


36
37
38
# File 'lib/artoo/adaptors/littlewire.rb', line 36

def firmware_name
  "Little Wire"
end

#i2c_endObject



79
80
# File 'lib/artoo/adaptors/littlewire.rb', line 79

def i2c_end
end

#i2c_read(size) ⇒ Object



82
83
84
85
86
# File 'lib/artoo/adaptors/littlewire.rb', line 82

def i2c_read(size)
  littlewire.i2c.start(@i2c_address, :read)
  val = littlewire.i2c.read(size, true)
  val
end

#i2c_start(address) ⇒ Object

i2c interface



73
74
75
76
77
# File 'lib/artoo/adaptors/littlewire.rb', line 73

def i2c_start(address)
  raise "i2c support requires version 1.3+ of littlewire" unless version >= "1.3"
  @i2c_address = address
  littlewire.i2c.delay = 10
end

#i2c_write(*data) ⇒ Object



88
89
90
91
# File 'lib/artoo/adaptors/littlewire.rb', line 88

def i2c_write(*data)
  littlewire.i2c.start(@i2c_address, :write)
  littlewire.i2c.write(data.to_a, true)
end

#pwm_write(pin, level) ⇒ Object

GPIO - PWM interface



63
64
65
# File 'lib/artoo/adaptors/littlewire.rb', line 63

def pwm_write(pin, level)
  littlewire.hardware_pwm_write(pin, level)
end

#servo_write(pin, level) ⇒ Object

GPIO - servo interface



68
69
70
# File 'lib/artoo/adaptors/littlewire.rb', line 68

def servo_write(pin, level)
  littlewire.servo_write(pin, level - 90)
end

#versionString

Returns version of littlewire board

Returns:

  • (String)


42
43
44
# File 'lib/artoo/adaptors/littlewire.rb', line 42

def version
  @firmware_version ||= littlewire.version
end