arduino 0.3.3 → 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/README.md +7 -1
- data/arduino.gemspec +3 -3
- data/arduino.pde +151 -131
- data/example_blink.rb +6 -2
- data/lib/arduino.rb +133 -120
- metadata +34 -64
data/README.md
CHANGED
@@ -4,7 +4,7 @@ This gem is a prototyping API for Arduino in Ruby. Helps prototype Arduino progr
|
|
4
4
|
|
5
5
|
#### Setup:
|
6
6
|
1. Install the gem: `gem install arduino`
|
7
|
-
2. Load [arduino.pde](https://github.com/
|
7
|
+
2. Load [arduino.pde](https://github.com/HashNuke/arduino/raw/master/arduino.pde) onto your Arduino dev board (just once and for all).
|
8
8
|
3. Import the arduino gem: `require "arduino"`
|
9
9
|
|
10
10
|
## Methods
|
@@ -65,3 +65,9 @@ The output pins must be set explicitly.
|
|
65
65
|
> © 2010 Akash Manohar <akash@akash.im>
|
66
66
|
> under the MIT License
|
67
67
|
|
68
|
+
# Credits
|
69
|
+
|
70
|
+
Thanks to the following people:
|
71
|
+
|
72
|
+
* [@unsymbol](http://github.com/unsymbol) - for fixing the Ubuntu reset problem
|
73
|
+
|
data/arduino.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "arduino"
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.4"
|
7
7
|
s.date = %q{2011-01-01}
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.authors = ["Akash Manohar"]
|
@@ -18,10 +18,10 @@ Thank you for installing the arduino gem
|
|
18
18
|
|
19
19
|
Load the arduino.pde program from http://ln.akash.im/arduino.pde to your board before using this library
|
20
20
|
|
21
|
-
Source: https://github.com/
|
21
|
+
Source: https://github.com/HashNuke/arduino/
|
22
22
|
|
23
23
|
--
|
24
|
-
|
24
|
+
@HashNuke
|
25
25
|
(http://akash.im)
|
26
26
|
==============================================
|
27
27
|
}
|
data/arduino.pde
CHANGED
@@ -1,131 +1,151 @@
|
|
1
|
-
// variable to store the data from the serial port
|
2
|
-
int cmd = 0;
|
3
|
-
|
4
|
-
// command arguments
|
5
|
-
int cmd_arg[2];
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
}
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
}
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
1
|
+
// variable to store the data from the serial port
|
2
|
+
int cmd = 0;
|
3
|
+
|
4
|
+
// command arguments
|
5
|
+
int cmd_arg[2];
|
6
|
+
|
7
|
+
int serialStatus = 0;
|
8
|
+
|
9
|
+
void setup() {
|
10
|
+
// connect to the serial port
|
11
|
+
Serial.begin(115200);
|
12
|
+
setupPins();
|
13
|
+
serialStatus = 1;
|
14
|
+
}
|
15
|
+
|
16
|
+
void loop()
|
17
|
+
{
|
18
|
+
|
19
|
+
if(serialStatus==0)
|
20
|
+
{
|
21
|
+
Serial.flush();
|
22
|
+
setupPins();
|
23
|
+
}
|
24
|
+
askCmd();
|
25
|
+
|
26
|
+
{
|
27
|
+
if(Serial.available()>0)
|
28
|
+
{
|
29
|
+
cmd = int(Serial.read()) - 48;
|
30
|
+
|
31
|
+
if(cmd==0) //set digital low
|
32
|
+
{
|
33
|
+
cmd_arg[0] = int(readData()) - 48;
|
34
|
+
digitalWrite(cmd_arg[0],LOW);
|
35
|
+
}
|
36
|
+
|
37
|
+
if(cmd==1) //set digital high
|
38
|
+
{
|
39
|
+
cmd_arg[0] = int(readData()) - 48;
|
40
|
+
digitalWrite(cmd_arg[0],HIGH);
|
41
|
+
}
|
42
|
+
|
43
|
+
if(cmd==2) //get digital value
|
44
|
+
{
|
45
|
+
cmd_arg[0] = int(readData()) - 48;
|
46
|
+
cmd_arg[0] = digitalRead(cmd_arg[0]);
|
47
|
+
Serial.println(cmd_arg[0]);
|
48
|
+
}
|
49
|
+
|
50
|
+
if(cmd==3) // set analog value
|
51
|
+
{
|
52
|
+
Serial.println("I'm in the right place");
|
53
|
+
cmd_arg[0] = int(readData()) - 48;
|
54
|
+
cmd_arg[1] = readHexValue();
|
55
|
+
analogWrite(cmd_arg[0],cmd_arg[1]);
|
56
|
+
}
|
57
|
+
|
58
|
+
if(cmd==4) //read analog value
|
59
|
+
{
|
60
|
+
cmd_arg[0] = int(readData()) - 48;
|
61
|
+
cmd_arg[0] = analogRead(cmd_arg[0]);
|
62
|
+
Serial.println(cmd_arg[0]);
|
63
|
+
}
|
64
|
+
|
65
|
+
if(cmd==5)
|
66
|
+
{
|
67
|
+
serialStatus = 0;
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
char readData()
|
74
|
+
{
|
75
|
+
askData();
|
76
|
+
|
77
|
+
while(1)
|
78
|
+
{
|
79
|
+
if(Serial.available()>0)
|
80
|
+
{
|
81
|
+
return Serial.read();
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
|
87
|
+
//read hex value from serial and convert to integer
|
88
|
+
int readHexValue()
|
89
|
+
{
|
90
|
+
int strval[2];
|
91
|
+
int converted_str;
|
92
|
+
|
93
|
+
while(1)
|
94
|
+
{
|
95
|
+
if(Serial.available()>0)
|
96
|
+
{
|
97
|
+
strval[0] = convert_hex_to_int(Serial.read());
|
98
|
+
break;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
askData();
|
103
|
+
|
104
|
+
while(1)
|
105
|
+
{
|
106
|
+
if(Serial.available()>0)
|
107
|
+
{
|
108
|
+
strval[1] = convert_hex_to_int(Serial.read());
|
109
|
+
break;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
converted_str = (strval[0]*16) + strval[1];
|
114
|
+
return converted_str;
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
int convert_hex_to_int(char c)
|
119
|
+
{
|
120
|
+
return (c <= '9') ? c-'0' : c-'a'+10;
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
void askData()
|
125
|
+
{
|
126
|
+
Serial.println("?");
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
void askCmd()
|
131
|
+
{
|
132
|
+
askData();
|
133
|
+
while(Serial.available()<=0)
|
134
|
+
{}
|
135
|
+
}
|
136
|
+
|
137
|
+
|
138
|
+
void setupPins()
|
139
|
+
{
|
140
|
+
while(Serial.available()<1)
|
141
|
+
{
|
142
|
+
// get number of output pins and convert to int
|
143
|
+
cmd = int(readData()) - 48;
|
144
|
+
for(int i=0; i<cmd; i++)
|
145
|
+
{
|
146
|
+
cmd_arg[0] = int(readData()) - 48;
|
147
|
+
pinMode(cmd_arg[0], OUTPUT);
|
148
|
+
}
|
149
|
+
break;
|
150
|
+
}
|
151
|
+
}
|
data/example_blink.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require "./lib/arduino"
|
2
2
|
|
3
|
+
port = '/dev/ttyUSB0'
|
4
|
+
|
3
5
|
#specify the port as an argument
|
4
|
-
board = Arduino.new(
|
6
|
+
board = Arduino.new(port)
|
5
7
|
|
6
8
|
#declare output pins
|
7
9
|
board.output(13)
|
8
10
|
|
9
11
|
#perform operations
|
10
|
-
|
12
|
+
5.times do
|
11
13
|
board.setHigh(13)
|
12
14
|
puts "High" if board.getState(13)
|
13
15
|
sleep(1)
|
@@ -15,3 +17,5 @@ board.output(13)
|
|
15
17
|
puts "Low" if !board.getState(13)
|
16
18
|
sleep(1)
|
17
19
|
end
|
20
|
+
|
21
|
+
board.close
|
data/lib/arduino.rb
CHANGED
@@ -12,126 +12,139 @@ require "serialport"
|
|
12
12
|
|
13
13
|
class Arduino
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
@pinStates = {}
|
22
|
-
end
|
15
|
+
# initialize port and baudrate
|
16
|
+
def initialize(port, baudrate=115200)
|
17
|
+
puts "initialized"
|
18
|
+
data_bits = 8
|
19
|
+
stop_bits = 1
|
20
|
+
parity = SerialPort::NONE
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
22
|
+
@serial = SerialPort.new port, baudrate
|
23
|
+
@serial.read_timeout = 2
|
24
|
+
@serial.sync
|
25
|
+
|
26
|
+
@port = port
|
27
|
+
@outputPins = []
|
28
|
+
@pinStates = {}
|
29
|
+
end
|
30
|
+
|
31
|
+
# Print information about connected board
|
32
|
+
def to_s
|
33
|
+
"Arduino is on port #{@port} at #{@serial.baud} baudrate"
|
34
|
+
end
|
35
|
+
|
36
|
+
# Set output pins. This is a must.
|
37
|
+
def output(*pinList)
|
38
|
+
sendData(pinList.length)
|
39
|
+
if pinList.class==Array
|
40
|
+
@outputPins = pinList
|
41
|
+
pinList.each do |pin|
|
42
|
+
sendPin(pin)
|
43
|
+
end
|
44
|
+
else
|
45
|
+
raise ArgumentError, "Arguments must be a list of pin numbers"
|
46
|
+
end
|
47
|
+
puts "return pinlist"
|
48
|
+
return pinList
|
49
|
+
end
|
50
|
+
|
51
|
+
# Set a pin state to low
|
52
|
+
def setLow(pin)
|
53
|
+
saveState(pin, false)
|
54
|
+
sendData('0')
|
55
|
+
sendPin(pin)
|
56
|
+
end
|
57
|
+
|
58
|
+
def isLow?(pin)
|
59
|
+
if !getState(pin)
|
60
|
+
return true
|
61
|
+
else
|
62
|
+
return false
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# Set a pin state to high
|
67
|
+
def setHigh(pin)
|
68
|
+
saveState(pin, true)
|
69
|
+
sendData('1')
|
70
|
+
sendPin(pin)
|
71
|
+
end
|
72
|
+
|
73
|
+
def isHigh?(pin)
|
74
|
+
if getState(pin)
|
75
|
+
return true
|
76
|
+
else
|
77
|
+
return false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def saveState(pin, state)
|
82
|
+
@pinStates[pin.to_s] = state
|
83
|
+
end
|
84
|
+
|
85
|
+
# Get state of a digital pin. Returns true if high and false if low.
|
86
|
+
def getState(pin)
|
87
|
+
if @pinStates.key?(pin.to_s)
|
88
|
+
return @pinStates[pin.to_s]
|
89
|
+
end
|
90
|
+
return false
|
91
|
+
end
|
92
|
+
|
93
|
+
# Write to an analog pin
|
94
|
+
def analogWrite(pin, value)
|
95
|
+
sendData('3')
|
96
|
+
fullHexValue = value.to_s(base=16)
|
97
|
+
hexValue = hexValue[2..fullHexValue.length]
|
98
|
+
if(hexValue.length==1)
|
99
|
+
sendData('0')
|
100
|
+
else
|
101
|
+
sendData(hexValue[0])
|
102
|
+
end
|
103
|
+
sendData(hexValue[1])
|
104
|
+
end
|
105
|
+
|
106
|
+
# Read from an analog pin
|
107
|
+
def analogRead(pin)
|
108
|
+
sendData('4')
|
109
|
+
sendPin(pin)
|
110
|
+
getData()
|
111
|
+
end
|
112
|
+
|
113
|
+
# set all pins to low
|
114
|
+
def turnOff
|
115
|
+
@outputPins.each do |pin|
|
116
|
+
setLow(pin)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# close serial connection to connected board
|
121
|
+
def close
|
122
|
+
# stops executing arduino code
|
123
|
+
@serial.write '5'.chr
|
124
|
+
# resets the arduino board (not on windows)
|
125
|
+
@serial.dtr=(0)
|
126
|
+
# close serial connection
|
127
|
+
@serial.close
|
128
|
+
p "closed"
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def sendPin(pin)
|
134
|
+
pinInChar = (pin+48)
|
135
|
+
sendData(pinInChar)
|
136
|
+
end
|
43
137
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
# Set a pin state to high
|
60
|
-
def setHigh(pin)
|
61
|
-
saveState(pin, true)
|
62
|
-
sendData('1')
|
63
|
-
sendPin(pin)
|
64
|
-
end
|
65
|
-
|
66
|
-
def isHigh?(pin)
|
67
|
-
if getState(pin)
|
68
|
-
return true
|
69
|
-
else
|
70
|
-
return false
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def saveState(pin, state)
|
75
|
-
@pinStates[pin.to_s] = state
|
76
|
-
end
|
77
|
-
|
78
|
-
# Get state of a digital pin. Returns true if high and false if low.
|
79
|
-
def getState(pin)
|
80
|
-
if @pinStates.key?(pin.to_s)
|
81
|
-
return @pinStates[pin.to_s]
|
82
|
-
end
|
83
|
-
return false
|
84
|
-
end
|
85
|
-
|
86
|
-
# Write to an analog pin
|
87
|
-
def analogWrite(pin, value)
|
88
|
-
sendData('3')
|
89
|
-
fullHexValue = value.to_s(base=16)
|
90
|
-
hexValue = hexValue[2..fullHexValue.length]
|
91
|
-
if(hexValue.length==1)
|
92
|
-
sendData('0')
|
93
|
-
else
|
94
|
-
sendData(hexValue[0])
|
95
|
-
end
|
96
|
-
sendData(hexValue[1])
|
97
|
-
end
|
98
|
-
|
99
|
-
# Read from an analog pin
|
100
|
-
def analogRead(pin)
|
101
|
-
sendData('4')
|
102
|
-
sendPin(pin)
|
103
|
-
getData()
|
104
|
-
end
|
105
|
-
|
106
|
-
# set all pins to low
|
107
|
-
def turnOff
|
108
|
-
@outputPins.each do |pin|
|
109
|
-
setLow(pin)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
# close serial connection to connected board
|
114
|
-
def close
|
115
|
-
@serial.close
|
116
|
-
end
|
117
|
-
|
118
|
-
private
|
119
|
-
|
120
|
-
def sendPin(pin)
|
121
|
-
pinInChar = (pin+48)
|
122
|
-
sendData(pinInChar)
|
123
|
-
end
|
124
|
-
|
125
|
-
def sendData(serialData)
|
126
|
-
while true
|
127
|
-
break if getData()=="?"
|
128
|
-
end
|
129
|
-
s = String(serialData.chr)
|
130
|
-
x = @serial.write (s)
|
131
|
-
end
|
132
|
-
|
133
|
-
def getData
|
134
|
-
cleanData = @serial.readlines()
|
135
|
-
cleanData = cleanData.join("").gsub("\n","").gsub("\r","")
|
136
|
-
end
|
138
|
+
def sendData(serialData)
|
139
|
+
while true
|
140
|
+
break if getData()=="?"
|
141
|
+
end
|
142
|
+
s = String(serialData.chr)
|
143
|
+
x = @serial.write s
|
144
|
+
end
|
145
|
+
|
146
|
+
def getData
|
147
|
+
cleanData = @serial.readlines()
|
148
|
+
cleanData = cleanData.join("").gsub("\n","").gsub("\r","")
|
149
|
+
end
|
137
150
|
end
|
metadata
CHANGED
@@ -1,47 +1,35 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: arduino
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 3
|
8
|
-
- 3
|
9
|
-
version: 0.3.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.4'
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Akash Manohar
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-01-01 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: serialport
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70182320491400 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
segments:
|
29
|
-
- 1
|
30
|
-
- 0
|
31
|
-
- 4
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 1.0.4
|
33
22
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70182320491400
|
25
|
+
description: A ruby library to talk to Arduino without having to burn programs repeatedly
|
26
|
+
to the board
|
27
|
+
email:
|
37
28
|
- akash@akash.im
|
38
29
|
executables: []
|
39
|
-
|
40
30
|
extensions: []
|
41
|
-
|
42
31
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
files:
|
32
|
+
files:
|
45
33
|
- .gitignore
|
46
34
|
- Gemfile
|
47
35
|
- Gemfile.lock
|
@@ -52,49 +40,31 @@ files:
|
|
52
40
|
- arduino.pde
|
53
41
|
- example_blink.rb
|
54
42
|
- lib/arduino.rb
|
55
|
-
has_rdoc: true
|
56
43
|
homepage: http://akash.im/arduino-ruby
|
57
44
|
licenses: []
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
----------------------------------------------\n\
|
63
|
-
\t\n\
|
64
|
-
Load the arduino.pde program from http://ln.akash.im/arduino.pde to your board before using this library\n\
|
65
|
-
\t\n\
|
66
|
-
Source: https://github.com/SingAlong/arduino/\n\n\
|
67
|
-
--\n\
|
68
|
-
SingAlong\n\
|
69
|
-
(http://akash.im)\n\
|
70
|
-
==============================================\n\
|
71
|
-
\t"
|
45
|
+
post_install_message: ! "\n==============================================\nThank you
|
46
|
+
for installing the arduino gem\n----------------------------------------------\n\t\nLoad
|
47
|
+
the arduino.pde program from http://ln.akash.im/arduino.pde to your board before
|
48
|
+
using this library\n\t\nSource: https://github.com/HashNuke/arduino/\n\n--\n@HashNuke\n(http://akash.im)\n==============================================\n\t"
|
72
49
|
rdoc_options: []
|
73
|
-
|
74
|
-
require_paths:
|
50
|
+
require_paths:
|
75
51
|
- lib
|
76
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
53
|
none: false
|
78
|
-
requirements:
|
79
|
-
- -
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
|
82
|
-
|
83
|
-
version: "0"
|
84
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
59
|
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
|
90
|
-
- 0
|
91
|
-
version: "0"
|
60
|
+
requirements:
|
61
|
+
- - ! '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
92
64
|
requirements: []
|
93
|
-
|
94
65
|
rubyforge_project: arduino
|
95
|
-
rubygems_version: 1.
|
66
|
+
rubygems_version: 1.8.10
|
96
67
|
signing_key:
|
97
68
|
specification_version: 3
|
98
69
|
summary: Arduino Prototyping API for Ruby
|
99
70
|
test_files: []
|
100
|
-
|