arduino 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- data/arduino.gemspec +1 -1
- data/example_blink.rb +6 -4
- data/lib/arduino.rb +32 -13
- metadata +2 -2
data/arduino.gemspec
CHANGED
data/example_blink.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
require "./lib/arduino"
|
2
2
|
|
3
3
|
#specify the port as an argument
|
4
|
-
|
4
|
+
board = Arduino.new('/dev/ttyUSB0')
|
5
5
|
|
6
6
|
#declare output pins
|
7
|
-
|
7
|
+
board.output(13)
|
8
8
|
|
9
9
|
#perform operations
|
10
10
|
10.times do
|
11
|
-
|
11
|
+
board.setHigh(13)
|
12
|
+
puts "High" if board.getState(13)
|
12
13
|
sleep(1)
|
13
|
-
|
14
|
+
board.setLow(13)
|
15
|
+
puts "Low" if !board.getState(13)
|
14
16
|
sleep(1)
|
15
17
|
end
|
data/lib/arduino.rb
CHANGED
@@ -18,6 +18,7 @@ class Arduino
|
|
18
18
|
@serial.sync
|
19
19
|
@port = port
|
20
20
|
@outputPins = []
|
21
|
+
@pinStates = {}
|
21
22
|
end
|
22
23
|
|
23
24
|
# Print information about connected board
|
@@ -37,27 +38,51 @@ class Arduino
|
|
37
38
|
else
|
38
39
|
raise ArgumentError, "Arguments must be a list of pin numbers"
|
39
40
|
end
|
40
|
-
|
41
|
-
|
42
|
-
# Get state of a digital pin. Returns true if high and false if low.
|
43
|
-
def getState(pin)
|
44
|
-
sendData('2')
|
45
|
-
sendPin(pin)
|
46
|
-
return formatPinState(getData())
|
41
|
+
return pinList
|
47
42
|
end
|
48
43
|
|
49
44
|
# Set a pin state to low
|
50
45
|
def setLow(pin)
|
46
|
+
saveState(pin, false)
|
51
47
|
sendData('0')
|
52
48
|
sendPin(pin)
|
53
49
|
end
|
54
50
|
|
51
|
+
def isLow?(pin)
|
52
|
+
if !getState(pin)
|
53
|
+
return true
|
54
|
+
else
|
55
|
+
return false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
55
59
|
# Set a pin state to high
|
56
60
|
def setHigh(pin)
|
61
|
+
saveState(pin, true)
|
57
62
|
sendData('1')
|
58
63
|
sendPin(pin)
|
59
64
|
end
|
60
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
|
+
|
61
86
|
# Write to an analog pin
|
62
87
|
def analogWrite(pin, value)
|
63
88
|
sendData('3')
|
@@ -109,10 +134,4 @@ class Arduino
|
|
109
134
|
cleanData = @serial.readlines()
|
110
135
|
cleanData = cleanData.join("").gsub("\n","").gsub("\r","")
|
111
136
|
end
|
112
|
-
|
113
|
-
def formatPinState(pinValue)
|
114
|
-
return true if pinValue=="1"
|
115
|
-
return false #if pinValue=="0"
|
116
|
-
end
|
117
|
-
|
118
137
|
end
|