arduino_firmata 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +4 -0
- data/Manifest.txt +1 -0
- data/README.rdoc +4 -4
- data/lib/arduino_firmata.rb +5 -2
- data/lib/arduino_firmata/arduino.rb +132 -0
- data/lib/arduino_firmata/const.rb +9 -2
- data/lib/arduino_firmata/main.rb +9 -128
- data/samples/README.md +16 -1
- data/samples/analog_read_write.rb +2 -2
- data/samples/digital_read.rb +1 -1
- data/samples/led_blink.rb +1 -1
- data/samples/led_fade.rb +7 -5
- data/samples/tweet_temperature.rb +1 -1
- metadata +92 -78
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= arduino_firmata
|
2
2
|
|
3
|
-
* http://github.com/shokai/
|
3
|
+
* http://github.com/shokai/arduino_firmata
|
4
4
|
|
5
5
|
== INSTALL:
|
6
6
|
|
@@ -12,11 +12,11 @@ Arduino Firmata protocol (http://firmata.org) implementation on Ruby.
|
|
12
12
|
|
13
13
|
== SYNOPSIS:
|
14
14
|
|
15
|
-
arduino = ArduinoFirmata
|
15
|
+
arduino = ArduinoFirmata.connect
|
16
16
|
|
17
17
|
or
|
18
18
|
|
19
|
-
arduino = ArduinoFirmata
|
19
|
+
arduino = ArduinoFirmata.connect '/dev/tty.usb-device-name'
|
20
20
|
|
21
21
|
Board Version
|
22
22
|
|
@@ -46,7 +46,7 @@ Analog Read
|
|
46
46
|
|
47
47
|
puts arduino.analog_read 0 # => 0 ~ 1023
|
48
48
|
|
49
|
-
see samples https://github.com/shokai/
|
49
|
+
see samples https://github.com/shokai/arduino_firmata/tree/gem/samples
|
50
50
|
|
51
51
|
== REQUIREMENTS:
|
52
52
|
|
data/lib/arduino_firmata.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)) unless
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'serialport'
|
5
|
+
require 'stringio'
|
5
6
|
require 'arduino_firmata/main'
|
7
|
+
require 'arduino_firmata/const'
|
8
|
+
require 'arduino_firmata/arduino'
|
6
9
|
|
7
10
|
module ArduinoFirmata
|
8
|
-
VERSION = '0.0.
|
11
|
+
VERSION = '0.0.4'
|
9
12
|
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
module ArduinoFirmata
|
2
|
+
|
3
|
+
class Arduino
|
4
|
+
|
5
|
+
attr_reader :version
|
6
|
+
|
7
|
+
def initialize(serial_name, params)
|
8
|
+
@wait_for_data = 0
|
9
|
+
@execute_multi_byte_command = 0
|
10
|
+
@multi_byte_channel = 0
|
11
|
+
@stored_input_data = []
|
12
|
+
@parsing_sysex = false
|
13
|
+
@sysex_bytes_read
|
14
|
+
|
15
|
+
@digital_output_data = Array.new(16, 0)
|
16
|
+
@digital_input_data = Array.new(16, 0)
|
17
|
+
@analog_input_data = Array.new(16, 0)
|
18
|
+
|
19
|
+
@version = nil
|
20
|
+
|
21
|
+
@serial = SerialPort.new(serial_name, params[:bps], params[:bit], params[:stopbit], params[:parity])
|
22
|
+
sleep 3
|
23
|
+
|
24
|
+
Thread.new{
|
25
|
+
loop do
|
26
|
+
process_input
|
27
|
+
sleep 0.1
|
28
|
+
end
|
29
|
+
}.run
|
30
|
+
|
31
|
+
(0...6).each do |i|
|
32
|
+
write(REPORT_ANALOG | i)
|
33
|
+
write 1
|
34
|
+
end
|
35
|
+
(0...2).each do |i|
|
36
|
+
write(REPORT_DIGITAL | i)
|
37
|
+
write 1
|
38
|
+
end
|
39
|
+
|
40
|
+
loop do
|
41
|
+
break if @version
|
42
|
+
sleep 0.3
|
43
|
+
end
|
44
|
+
sleep 0.5
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def digital_read(pin)
|
49
|
+
(@digital_input_data[pin >> 3] >> (pin & 0x07)) & 0x01 > 0
|
50
|
+
end
|
51
|
+
|
52
|
+
def analog_read(pin)
|
53
|
+
@analog_input_data[pin]
|
54
|
+
end
|
55
|
+
|
56
|
+
def pin_mode(pin, mode)
|
57
|
+
write SET_PIN_MODE
|
58
|
+
write pin
|
59
|
+
write mode
|
60
|
+
end
|
61
|
+
|
62
|
+
def digital_write(pin, value)
|
63
|
+
port_num = (pin >> 3) & 0x0F
|
64
|
+
if value == 0 or value == true
|
65
|
+
@digital_output_data[port_num] &= ~(1 << (pin & 0x07))
|
66
|
+
else
|
67
|
+
@digital_output_data[port_num] |= (1 << (pin & 0x07))
|
68
|
+
end
|
69
|
+
|
70
|
+
write(DIGITAL_MESSAGE | port_num)
|
71
|
+
write(@digital_output_data[port_num] & 0x7F)
|
72
|
+
write(@digital_output_data[port_num] >> 7)
|
73
|
+
end
|
74
|
+
|
75
|
+
def analog_write(pin, value)
|
76
|
+
pin_mode pin, PWM
|
77
|
+
write(ANALOG_MESSAGE | (pin & 0x0F))
|
78
|
+
write(value & 0x7F)
|
79
|
+
write(value >> 7)
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
def write(cmd)
|
84
|
+
@serial.write_nonblock cmd.chr
|
85
|
+
end
|
86
|
+
|
87
|
+
def read
|
88
|
+
@serial.read_nonblock 9600 rescue EOFError
|
89
|
+
end
|
90
|
+
|
91
|
+
def process_input
|
92
|
+
StringIO.new(String read).bytes.each do |input_data|
|
93
|
+
command = nil
|
94
|
+
|
95
|
+
if @parsing_sysex
|
96
|
+
if input_data == END_SYSEX
|
97
|
+
@parsing_sysex = FALSE
|
98
|
+
else
|
99
|
+
@stored_input_data[@sysex_bytes_read] = input_data
|
100
|
+
@sysex_bytes_read += 1
|
101
|
+
end
|
102
|
+
elsif @wait_for_data > 0 and input_data < 128
|
103
|
+
@wait_for_data -= 1
|
104
|
+
@stored_input_data[@wait_for_data] = input_data
|
105
|
+
if @execute_multi_byte_command != 0 and @wait_for_data == 0
|
106
|
+
case @execute_multi_byte_command
|
107
|
+
when DIGITAL_MESSAGE
|
108
|
+
@digital_input_data[@multi_byte_channel] = (@stored_input_data[0] << 7) + @stored_input_data[1]
|
109
|
+
when ANALOG_MESSAGE
|
110
|
+
@analog_input_data[@multi_byte_channel] = (@stored_input_data[0] << 7) + @stored_input_data[1]
|
111
|
+
when REPORT_VERSION
|
112
|
+
@version = "#{@stored_input_data[1]}.#{@stored_input_data[0]}"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
else
|
116
|
+
if input_data < 0xF0
|
117
|
+
command = input_data & 0xF0
|
118
|
+
@multi_byte_channel = input_data & 0x0F
|
119
|
+
else
|
120
|
+
command = input_data
|
121
|
+
end
|
122
|
+
if [DIGITAL_MESSAGE, ANALOG_MESSAGE, REPORT_VERSION].include? command
|
123
|
+
@wait_for_data = 2
|
124
|
+
@execute_multi_byte_command = command
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
data/lib/arduino_firmata/main.rb
CHANGED
@@ -1,136 +1,17 @@
|
|
1
|
-
require 'serialport'
|
2
|
-
require 'stringio'
|
3
|
-
|
4
1
|
module ArduinoFirmata
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def initialize(serial_name=nil, bps=57600)
|
11
|
-
serial_name = ArduinoFirmata.list[0] unless serial_name
|
12
|
-
@wait_for_data = 0
|
13
|
-
@execute_multi_byte_command = 0
|
14
|
-
@multi_byte_channel = 0
|
15
|
-
@stored_input_data = []
|
16
|
-
@parsing_sysex = false
|
17
|
-
@sysex_bytes_read
|
18
|
-
|
19
|
-
@digital_output_data = Array.new(16, 0)
|
20
|
-
@digital_input_data = Array.new(16, 0)
|
21
|
-
@analog_input_data = Array.new(16, 0)
|
22
|
-
|
23
|
-
@version = nil
|
24
|
-
|
25
|
-
@serial = SerialPort.new(serial_name, bps, 8, 1, 0)
|
26
|
-
sleep 3
|
27
|
-
|
28
|
-
Thread.new{
|
29
|
-
loop do
|
30
|
-
process_input
|
31
|
-
sleep 0.1
|
32
|
-
end
|
33
|
-
}.run
|
34
|
-
|
35
|
-
(0...6).each do |i|
|
36
|
-
write(REPORT_ANALOG | i)
|
37
|
-
write 1
|
38
|
-
end
|
39
|
-
(0...2).each do |i|
|
40
|
-
write(REPORT_DIGITAL | i)
|
41
|
-
write 1
|
42
|
-
end
|
43
|
-
|
44
|
-
loop do
|
45
|
-
break if @version
|
46
|
-
sleep 0.3
|
47
|
-
end
|
48
|
-
sleep 0.5
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
def digital_read(pin)
|
53
|
-
(@digital_input_data[pin >> 3] >> (pin & 0x07)) & 0x01 > 0
|
54
|
-
end
|
55
|
-
|
56
|
-
def analog_read(pin)
|
57
|
-
@analog_input_data[pin]
|
58
|
-
end
|
59
|
-
|
60
|
-
def pin_mode(pin, mode)
|
61
|
-
write SET_PIN_MODE
|
62
|
-
write pin
|
63
|
-
write mode
|
64
|
-
end
|
65
|
-
|
66
|
-
def digital_write(pin, value)
|
67
|
-
port_num = (pin >> 3) & 0x0F
|
68
|
-
if value == 0 or value == true
|
69
|
-
@digital_output_data[port_num] &= ~(1 << (pin & 0x07))
|
70
|
-
else
|
71
|
-
@digital_output_data[port_num] |= (1 << (pin & 0x07))
|
72
|
-
end
|
73
|
-
|
74
|
-
write(DIGITAL_MESSAGE | port_num)
|
75
|
-
write(@digital_output_data[port_num] & 0x7F)
|
76
|
-
write(@digital_output_data[port_num] >> 7)
|
77
|
-
end
|
78
|
-
|
79
|
-
def analog_write(pin, value)
|
80
|
-
pin_mode pin, PWM
|
81
|
-
write(ANALOG_MESSAGE | (pin & 0x0F))
|
82
|
-
write(value & 0x7F)
|
83
|
-
write(value >> 7)
|
84
|
-
end
|
3
|
+
def self.list
|
4
|
+
Dir.entries('/dev').grep(/tty\.?usb/i).map{|fname| "/dev/#{fname}"}
|
5
|
+
end
|
85
6
|
|
86
|
-
|
87
|
-
|
88
|
-
@serial.write_nonblock cmd.chr
|
89
|
-
end
|
7
|
+
def self.connect(serial_name=nil, params={})
|
8
|
+
serial_name = self.list[0] unless serial_name
|
90
9
|
|
91
|
-
|
92
|
-
|
10
|
+
Params.default.each do |k,v|
|
11
|
+
params[k] = v unless params[k]
|
93
12
|
end
|
94
13
|
|
95
|
-
|
96
|
-
StringIO.new(String read).bytes.each do |input_data|
|
97
|
-
command = nil
|
98
|
-
|
99
|
-
if @parsing_sysex
|
100
|
-
if input_data == END_SYSEX
|
101
|
-
@parsing_sysex = FALSE
|
102
|
-
else
|
103
|
-
@stored_input_data[@sysex_bytes_read] = input_data
|
104
|
-
@sysex_bytes_read += 1
|
105
|
-
end
|
106
|
-
elsif @wait_for_data > 0 and input_data < 128
|
107
|
-
@wait_for_data -= 1
|
108
|
-
@stored_input_data[@wait_for_data] = input_data
|
109
|
-
if @execute_multi_byte_command != 0 and @wait_for_data == 0
|
110
|
-
case @execute_multi_byte_command
|
111
|
-
when DIGITAL_MESSAGE
|
112
|
-
@digital_input_data[@multi_byte_channel] = (@stored_input_data[0] << 7) + @stored_input_data[1]
|
113
|
-
when ANALOG_MESSAGE
|
114
|
-
@analog_input_data[@multi_byte_channel] = (@stored_input_data[0] << 7) + @stored_input_data[1]
|
115
|
-
when REPORT_VERSION
|
116
|
-
@version = "#{@stored_input_data[1]}.#{@stored_input_data[0]}"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
else
|
120
|
-
if input_data < 0xF0
|
121
|
-
command = input_data & 0xF0
|
122
|
-
@multi_byte_channel = input_data & 0x0F
|
123
|
-
else
|
124
|
-
command = input_data
|
125
|
-
end
|
126
|
-
if [DIGITAL_MESSAGE, ANALOG_MESSAGE, REPORT_VERSION].include? command
|
127
|
-
@wait_for_data = 2
|
128
|
-
@execute_multi_byte_command = command
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
14
|
+
Arduino.new serial_name, params
|
134
15
|
end
|
135
|
-
|
16
|
+
|
136
17
|
end
|
data/samples/README.md
CHANGED
@@ -1 +1,16 @@
|
|
1
|
-
#
|
1
|
+
# Arduino Firmata Samples
|
2
|
+
|
3
|
+
Digital/Analog IO
|
4
|
+
-----------------
|
5
|
+
- analog_read_write.rb
|
6
|
+
- digital_read.rb
|
7
|
+
- led_blink.rb
|
8
|
+
- led_fade.rb
|
9
|
+
|
10
|
+
|
11
|
+
Tweet Temperature
|
12
|
+
-----------------
|
13
|
+
|
14
|
+
% gem install tw
|
15
|
+
% tw --user:add
|
16
|
+
% ruby tweet_temperature.rb
|
@@ -3,11 +3,11 @@ require 'rubygems'
|
|
3
3
|
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
4
4
|
require 'arduino_firmata'
|
5
5
|
|
6
|
-
arduino = ArduinoFirmata
|
6
|
+
arduino = ArduinoFirmata.connect ARGV.shift
|
7
7
|
|
8
8
|
loop do
|
9
9
|
an = arduino.analog_read 0
|
10
10
|
puts an
|
11
|
-
arduino.analog_write
|
11
|
+
arduino.analog_write 11, an/4
|
12
12
|
sleep 0.1
|
13
13
|
end
|
data/samples/digital_read.rb
CHANGED
data/samples/led_blink.rb
CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
|
|
3
3
|
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
4
4
|
require 'arduino_firmata'
|
5
5
|
|
6
|
-
arduino = ArduinoFirmata
|
6
|
+
arduino = ArduinoFirmata.connect ARGV.shift
|
7
7
|
puts "firmata version #{arduino.version}"
|
8
8
|
|
9
9
|
stat = true
|
data/samples/led_fade.rb
CHANGED
@@ -3,18 +3,20 @@ require 'rubygems'
|
|
3
3
|
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
4
4
|
require 'arduino_firmata'
|
5
5
|
|
6
|
-
arduino = ArduinoFirmata
|
7
|
-
pin_num =
|
6
|
+
arduino = ArduinoFirmata.connect ARGV.shift
|
7
|
+
pin_num = 11
|
8
8
|
|
9
9
|
loop do
|
10
|
-
puts "
|
10
|
+
puts "-"*10
|
11
11
|
0.upto(255) do |i|
|
12
|
+
puts i
|
12
13
|
arduino.analog_write pin_num, i
|
13
14
|
sleep 0.01
|
14
15
|
end
|
15
|
-
|
16
|
-
puts "
|
16
|
+
|
17
|
+
puts "-"*10
|
17
18
|
255.downto(0) do |i|
|
19
|
+
puts i
|
18
20
|
arduino.analog_write pin_num, i
|
19
21
|
sleep 0.01
|
20
22
|
end
|
metadata
CHANGED
@@ -1,96 +1,104 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: arduino_firmata
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Sho Hashimoto
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
+
|
18
|
+
date: 2012-10-24 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
prerelease: false
|
22
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
23
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 19
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 1
|
31
|
+
- 0
|
21
32
|
version: 1.1.0
|
22
33
|
- - <
|
23
|
-
- !ruby/object:Gem::Version
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
hash: 15
|
36
|
+
segments:
|
37
|
+
- 2
|
38
|
+
- 0
|
39
|
+
- 0
|
24
40
|
version: 2.0.0
|
25
41
|
type: :runtime
|
42
|
+
name: serialport
|
43
|
+
version_requirements: *id001
|
44
|
+
- !ruby/object:Gem::Dependency
|
26
45
|
prerelease: false
|
27
|
-
|
46
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
47
|
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.1.0
|
33
|
-
- - <
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: 2.0.0
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rdoc
|
38
|
-
requirement: !ruby/object:Gem::Requirement
|
39
|
-
none: false
|
40
|
-
requirements:
|
48
|
+
requirements:
|
41
49
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
hash: 19
|
52
|
+
segments:
|
53
|
+
- 3
|
54
|
+
- 10
|
55
|
+
version: "3.10"
|
44
56
|
type: :development
|
57
|
+
name: rdoc
|
58
|
+
version_requirements: *id002
|
59
|
+
- !ruby/object:Gem::Dependency
|
45
60
|
prerelease: false
|
46
|
-
|
61
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
47
62
|
none: false
|
48
|
-
requirements:
|
49
|
-
- -
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
requirements:
|
57
|
-
- - ! '>='
|
58
|
-
- !ruby/object:Gem::Version
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
hash: 5
|
67
|
+
segments:
|
68
|
+
- 1
|
69
|
+
- 5
|
70
|
+
- 3
|
59
71
|
version: 1.5.3
|
60
72
|
type: :development
|
73
|
+
name: newgem
|
74
|
+
version_requirements: *id003
|
75
|
+
- !ruby/object:Gem::Dependency
|
61
76
|
prerelease: false
|
62
|
-
|
63
|
-
none: false
|
64
|
-
requirements:
|
65
|
-
- - ! '>='
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 1.5.3
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: hoe
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
77
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
71
78
|
none: false
|
72
|
-
requirements:
|
79
|
+
requirements:
|
73
80
|
- - ~>
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 5
|
83
|
+
segments:
|
84
|
+
- 3
|
85
|
+
- 1
|
86
|
+
version: "3.1"
|
76
87
|
type: :development
|
77
|
-
|
78
|
-
version_requirements:
|
79
|
-
none: false
|
80
|
-
requirements:
|
81
|
-
- - ~>
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '3.1'
|
88
|
+
name: hoe
|
89
|
+
version_requirements: *id004
|
84
90
|
description: Arduino Firmata protocol (http://firmata.org) implementation on Ruby.
|
85
|
-
email:
|
91
|
+
email:
|
86
92
|
- hashimoto@shokai.org
|
87
93
|
executables: []
|
94
|
+
|
88
95
|
extensions: []
|
89
|
-
|
96
|
+
|
97
|
+
extra_rdoc_files:
|
90
98
|
- History.txt
|
91
99
|
- Manifest.txt
|
92
100
|
- README.rdoc
|
93
|
-
files:
|
101
|
+
files:
|
94
102
|
- .gitignore
|
95
103
|
- Gemfile
|
96
104
|
- Gemfile.lock
|
@@ -99,6 +107,7 @@ files:
|
|
99
107
|
- README.rdoc
|
100
108
|
- Rakefile
|
101
109
|
- lib/arduino_firmata.rb
|
110
|
+
- lib/arduino_firmata/arduino.rb
|
102
111
|
- lib/arduino_firmata/const.rb
|
103
112
|
- lib/arduino_firmata/main.rb
|
104
113
|
- samples/README.md
|
@@ -113,35 +122,40 @@ files:
|
|
113
122
|
- test/test_arduino_firmata.rb
|
114
123
|
- test/test_helper.rb
|
115
124
|
- .gemtest
|
116
|
-
homepage: http://github.com/shokai/
|
125
|
+
homepage: http://github.com/shokai/arduino_firmata
|
117
126
|
licenses: []
|
127
|
+
|
118
128
|
post_install_message:
|
119
|
-
rdoc_options:
|
129
|
+
rdoc_options:
|
120
130
|
- --main
|
121
131
|
- README.rdoc
|
122
|
-
require_paths:
|
132
|
+
require_paths:
|
123
133
|
- lib
|
124
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
125
135
|
none: false
|
126
|
-
requirements:
|
127
|
-
- -
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
|
130
|
-
segments:
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
hash: 3
|
140
|
+
segments:
|
131
141
|
- 0
|
132
|
-
|
133
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
+
version: "0"
|
143
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
144
|
none: false
|
135
|
-
requirements:
|
136
|
-
- -
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
hash: 3
|
149
|
+
segments:
|
150
|
+
- 0
|
151
|
+
version: "0"
|
139
152
|
requirements: []
|
153
|
+
|
140
154
|
rubyforge_project: arduino_firmata
|
141
155
|
rubygems_version: 1.8.24
|
142
156
|
signing_key:
|
143
157
|
specification_version: 3
|
144
158
|
summary: Arduino Firmata protocol (http://firmata.org) implementation on Ruby.
|
145
|
-
test_files:
|
159
|
+
test_files:
|
146
160
|
- test/test_arduino_firmata.rb
|
147
161
|
- test/test_helper.rb
|