arduino_firmata 0.1.7 → 0.1.8
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 +5 -0
- data/lib/arduino_firmata/arduino.rb +25 -4
- data/lib/arduino_firmata/version.rb +1 -1
- data/samples/led_blink.rb +2 -0
- data/samples/servo.rb +1 -1
- data/test/test_arduino_firmata.rb +36 -3
- data/test/test_block.rb +8 -0
- data/test/test_helper.rb +1 -0
- metadata +2 -2
data/History.txt
CHANGED
@@ -82,6 +82,10 @@ module ArduinoFirmata
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
def reset
|
86
|
+
write SYSTEM_RESET
|
87
|
+
end
|
88
|
+
|
85
89
|
def digital_read(pin)
|
86
90
|
(@digital_input_data[pin >> 3] >> (pin & 0x07)) & 0x01 > 0
|
87
91
|
end
|
@@ -93,10 +97,21 @@ module ArduinoFirmata
|
|
93
97
|
def pin_mode(pin, mode)
|
94
98
|
write SET_PIN_MODE
|
95
99
|
write pin
|
96
|
-
|
100
|
+
mode = case mode
|
101
|
+
when true
|
102
|
+
OUTPUT
|
103
|
+
when false
|
104
|
+
INPUT
|
105
|
+
else
|
106
|
+
mode
|
107
|
+
end
|
108
|
+
if write(mode) == 1
|
109
|
+
return mode
|
110
|
+
end
|
97
111
|
end
|
98
112
|
|
99
113
|
def digital_write(pin, value)
|
114
|
+
pin_mode pin, OUTPUT
|
100
115
|
port_num = (pin >> 3) & 0x0F
|
101
116
|
if value == 0 or value == false
|
102
117
|
@digital_output_data[port_num] &= ~(1 << (pin & 0x07))
|
@@ -106,21 +121,27 @@ module ArduinoFirmata
|
|
106
121
|
|
107
122
|
write(DIGITAL_MESSAGE | port_num)
|
108
123
|
write(@digital_output_data[port_num] & 0x7F)
|
109
|
-
write(@digital_output_data[port_num] >> 7)
|
124
|
+
if write(@digital_output_data[port_num] >> 7) == 1
|
125
|
+
return value
|
126
|
+
end
|
110
127
|
end
|
111
128
|
|
112
129
|
def analog_write(pin, value)
|
113
130
|
pin_mode pin, PWM
|
114
131
|
write(ANALOG_MESSAGE | (pin & 0x0F))
|
115
132
|
write(value & 0x7F)
|
116
|
-
write(value >> 7)
|
133
|
+
if write(value >> 7) == 1
|
134
|
+
return value
|
135
|
+
end
|
117
136
|
end
|
118
137
|
|
119
138
|
def servo_write(pin, angle)
|
120
139
|
pin_mode pin, SERVO
|
121
140
|
write(ANALOG_MESSAGE | (pin & 0x0F))
|
122
141
|
write(angle & 0x7F)
|
123
|
-
write(angle >> 7)
|
142
|
+
if write(angle >> 7) == 1
|
143
|
+
return angle
|
144
|
+
end
|
124
145
|
end
|
125
146
|
|
126
147
|
private
|
data/samples/led_blink.rb
CHANGED
data/samples/servo.rb
CHANGED
@@ -11,6 +11,14 @@ class TestArduinoFirmata < MiniTest::Unit::TestCase
|
|
11
11
|
@arduino.close
|
12
12
|
end
|
13
13
|
|
14
|
+
def test_digital_read
|
15
|
+
0.upto(13).each do |pin|
|
16
|
+
din = @arduino.digital_read pin
|
17
|
+
assert [true,false].include? din
|
18
|
+
end
|
19
|
+
@arduino.close
|
20
|
+
end
|
21
|
+
|
14
22
|
def test_analog_read
|
15
23
|
0.upto(5).each do |pin|
|
16
24
|
ain = @arduino.analog_read pin
|
@@ -19,11 +27,36 @@ class TestArduinoFirmata < MiniTest::Unit::TestCase
|
|
19
27
|
@arduino.close
|
20
28
|
end
|
21
29
|
|
22
|
-
def
|
30
|
+
def test_digital_write
|
23
31
|
0.upto(13).each do |pin|
|
24
|
-
|
25
|
-
assert
|
32
|
+
assert @arduino.digital_write(pin, true) == true
|
33
|
+
assert @arduino.digital_write(pin, false) == false
|
26
34
|
end
|
27
35
|
@arduino.close
|
28
36
|
end
|
37
|
+
|
38
|
+
def test_analog_write
|
39
|
+
0.upto(13).each do |pin|
|
40
|
+
value = rand(256)
|
41
|
+
assert @arduino.analog_write(pin, value) == value
|
42
|
+
end
|
43
|
+
@arduino.close
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_servo_write
|
47
|
+
0.upto(13).each do |pin|
|
48
|
+
angle = rand(181)
|
49
|
+
assert @arduino.servo_write(pin, angle) == angle
|
50
|
+
end
|
51
|
+
@arduino.close
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_pin_mode
|
55
|
+
0.upto(13).each do |pin|
|
56
|
+
mode = [ArduinoFirmata::OUTPUT, ArduinoFirmata::INPUT].sample
|
57
|
+
assert @arduino.pin_mode(pin, mode) == mode
|
58
|
+
end
|
59
|
+
@arduino.close
|
60
|
+
end
|
61
|
+
|
29
62
|
end
|
data/test/test_block.rb
CHANGED
@@ -10,4 +10,12 @@ class TestBlock < MiniTest::Unit::TestCase
|
|
10
10
|
assert version_ and version_ > '2.0'
|
11
11
|
end
|
12
12
|
|
13
|
+
def test_block_analog_read
|
14
|
+
ain = nil
|
15
|
+
ArduinoFirmata.connect ENV['ARDUINO'] do
|
16
|
+
ain = analog_read 0
|
17
|
+
end
|
18
|
+
assert 0 <= ain and ain < 1024
|
19
|
+
end
|
20
|
+
|
13
21
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arduino_firmata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: serialport
|