Class: Artoo::Adaptors::Littlewire
- Inherits:
-
Adaptor
- Object
- Adaptor
- Artoo::Adaptors::Littlewire
- Defined in:
- lib/artoo/adaptors/littlewire.rb
Overview
Connect to Digispark or Littlewire device using Little Wire protocol
Instance Attribute Summary collapse
-
#firmware_version ⇒ Object
readonly
Returns the value of attribute firmware_version.
-
#littlewire ⇒ Object
readonly
Returns the value of attribute littlewire.
-
#product ⇒ Object
readonly
Returns the value of attribute product.
-
#usb ⇒ Object
readonly
Returns the value of attribute usb.
-
#vendor ⇒ Object
readonly
Returns the value of attribute vendor.
Instance Method Summary collapse
- #analog_pin(pin) ⇒ Object
-
#analog_read(pin) ⇒ Object
GPIO - analog interface.
-
#connect ⇒ Boolean
Creates connection with littlewire board.
- #connect_to_usb ⇒ Object
-
#digital_read(pin) ⇒ Object
GPIO - digital interface.
- #digital_write(pin, val) ⇒ Object
-
#disconnect ⇒ Boolean
Closes connection with littlewire board.
-
#firmware_name ⇒ String
Returns name of littlewire board.
- #i2c_end ⇒ Object
- #i2c_read(size) ⇒ Object
-
#i2c_start(address) ⇒ Object
i2c interface.
- #i2c_write(*data) ⇒ Object
-
#initialize(params = {}) ⇒ Littlewire
constructor
A new instance of Littlewire.
-
#method_missing(method_name, *arguments, &block) ⇒ Object
Uses method missing to call Littlewire methods.
-
#pwm_write(pin, level) ⇒ Object
GPIO - PWM interface.
-
#servo_write(pin, level) ⇒ Object
GPIO - servo interface.
-
#version ⇒ String
Returns version of littlewire board.
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_version ⇒ Object (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 |
#littlewire ⇒ Object (readonly)
Returns the value of attribute littlewire.
8 9 10 |
# File 'lib/artoo/adaptors/littlewire.rb', line 8 def littlewire @littlewire end |
#product ⇒ Object (readonly)
Returns the value of attribute product.
8 9 10 |
# File 'lib/artoo/adaptors/littlewire.rb', line 8 def product @product end |
#usb ⇒ Object (readonly)
Returns the value of attribute usb.
8 9 10 |
# File 'lib/artoo/adaptors/littlewire.rb', line 8 def usb @usb end |
#vendor ⇒ Object (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 |
#connect ⇒ Boolean
Creates connection with littlewire board
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_usb ⇒ Object
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 |
#disconnect ⇒ Boolean
Closes connection with littlewire board
29 30 31 32 |
# File 'lib/artoo/adaptors/littlewire.rb', line 29 def disconnect littlewire.finished super end |
#firmware_name ⇒ String
Returns name of littlewire board
36 37 38 |
# File 'lib/artoo/adaptors/littlewire.rb', line 36 def firmware_name "Little Wire" end |
#i2c_end ⇒ Object
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 |
#version ⇒ String
Returns version of littlewire board
42 43 44 |
# File 'lib/artoo/adaptors/littlewire.rb', line 42 def version @firmware_version ||= littlewire.version end |