Class: Artoo::Adaptors::Firmata
- Inherits:
-
Adaptor
- Object
- Adaptor
- Artoo::Adaptors::Firmata
- Defined in:
- lib/artoo/adaptors/firmata.rb
Overview
Connect to Arduino using Firmata
Instance Attribute Summary collapse
-
#firmata ⇒ Object
readonly
Returns the value of attribute firmata.
-
#i2c_address ⇒ Object
readonly
Returns the value of attribute i2c_address.
Instance Method Summary collapse
-
#analog_read(pin) ⇒ Object
GPIO - analog.
-
#connect ⇒ Boolean
Creates connection with firmata board.
- #digital_read(pin) ⇒ Object
-
#digital_write(pin, level) ⇒ Object
GPIO - digital.
-
#disconnect ⇒ Boolean
Closes connection with firmata board.
-
#firmware_name ⇒ Object
device info interface.
- #i2c_end ⇒ Object
- #i2c_read(size) ⇒ Object
-
#i2c_start(address) ⇒ Object
i2c interface.
- #i2c_write(*data) ⇒ Object
-
#pwm_write(pin, level) ⇒ Object
GPIO - PWM.
-
#servo_write(pin, angle) ⇒ Object
GPIO - servo.
- #version ⇒ Object
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *arguments, &block) ⇒ Object (private)
Uses method missing to call Firmata Board methods
120 121 122 |
# File 'lib/artoo/adaptors/firmata.rb', line 120 def method_missing(method_name, *arguments, &block) firmata.send(method_name, *arguments, &block) end |
Instance Attribute Details
#firmata ⇒ Object (readonly)
Returns the value of attribute firmata.
8 9 10 |
# File 'lib/artoo/adaptors/firmata.rb', line 8 def firmata @firmata end |
#i2c_address ⇒ Object (readonly)
Returns the value of attribute i2c_address.
8 9 10 |
# File 'lib/artoo/adaptors/firmata.rb', line 8 def i2c_address @i2c_address end |
Instance Method Details
#analog_read(pin) ⇒ Object
GPIO - analog
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/artoo/adaptors/firmata.rb', line 56 def analog_read(pin) firmata.set_pin_mode(firmata.analog_pins[pin], ::Firmata::PinModes::ANALOG) firmata.toggle_pin_reporting(firmata.analog_pins[pin]) firmata.read_and_process value = 0 while i = find_event("analog_read_#{pin}") do event = events.slice!(i) value = event.data.first if !event.nil? end value end |
#connect ⇒ Boolean
Creates connection with firmata board
12 13 14 15 16 17 18 19 |
# File 'lib/artoo/adaptors/firmata.rb', line 12 def connect require 'firmata' unless defined?(::Firmata::Board) @firmata = ::Firmata::Board.new(connect_to) @firmata.connect super return true end |
#digital_read(pin) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/artoo/adaptors/firmata.rb', line 42 def digital_read(pin) firmata.set_pin_mode(pin, ::Firmata::PinModes::INPUT) firmata.toggle_pin_reporting(pin) firmata.read_and_process value = nil while i = find_event("digital_read_#{pin}") event = events.slice!(i) value = event.data.first if !event.nil? end value end |
#digital_write(pin, level) ⇒ Object
GPIO - digital
37 38 39 40 |
# File 'lib/artoo/adaptors/firmata.rb', line 37 def digital_write(pin, level) firmata.set_pin_mode(pin, ::Firmata::PinModes::OUTPUT) firmata.digital_write(pin, convert_level(level)) end |
#disconnect ⇒ Boolean
Closes connection with firmata board
23 24 25 |
# File 'lib/artoo/adaptors/firmata.rb', line 23 def disconnect super end |
#firmware_name ⇒ Object
device info interface
28 29 30 |
# File 'lib/artoo/adaptors/firmata.rb', line 28 def firmware_name firmata.firmware_name end |
#i2c_end ⇒ Object
88 89 90 |
# File 'lib/artoo/adaptors/firmata.rb', line 88 def i2c_end end |
#i2c_read(size) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/artoo/adaptors/firmata.rb', line 92 def i2c_read(size) firmata.i2c_read_request(i2c_address, size) firmata.read_and_process value = [] while i = find_event(:i2c_reply) do event = events.slice!(i) value = event.data.first[:data] if !event.nil? end value end |
#i2c_start(address) ⇒ Object
i2c interface
82 83 84 85 86 |
# File 'lib/artoo/adaptors/firmata.rb', line 82 def i2c_start(address) @i2c_address = address firmata.i2c_config(0) end |
#i2c_write(*data) ⇒ Object
104 105 106 |
# File 'lib/artoo/adaptors/firmata.rb', line 104 def i2c_write(*data) firmata.i2c_write_request(i2c_address, *data) end |
#pwm_write(pin, level) ⇒ Object
GPIO - PWM
70 71 72 73 |
# File 'lib/artoo/adaptors/firmata.rb', line 70 def pwm_write(pin, level) firmata.set_pin_mode(pin, ::Firmata::PinModes::PWM) firmata.analog_write(pin, level) end |
#servo_write(pin, angle) ⇒ Object
GPIO - servo
76 77 78 79 |
# File 'lib/artoo/adaptors/firmata.rb', line 76 def servo_write(pin, angle) firmata.set_pin_mode(pin, ::Firmata::PinModes::SERVO) firmata.analog_write(pin, angle) end |
#version ⇒ Object
32 33 34 |
# File 'lib/artoo/adaptors/firmata.rb', line 32 def version firmata.version end |