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 CHANGED
@@ -1,3 +1,8 @@
1
+ === 0.1.8 2013-01-11
2
+
3
+ * add tests
4
+ * add function Arduino::reset
5
+
1
6
  === 0.1.7 2013-01-04
2
7
 
3
8
  * use bundler gem template
@@ -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
- write mode
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
@@ -1,4 +1,4 @@
1
1
 
2
2
  module ArduinoFirmata
3
- VERSION = '0.1.7'
3
+ VERSION = '0.1.8'
4
4
  end
data/samples/led_blink.rb CHANGED
@@ -6,6 +6,8 @@ require 'arduino_firmata'
6
6
  arduino = ArduinoFirmata.connect ARGV.shift
7
7
  puts "firmata version #{arduino.version}"
8
8
 
9
+ arduino.pin_mode 13, ArduinoFirmata::OUTPUT
10
+
9
11
  stat = true
10
12
  loop do
11
13
  puts stat
data/samples/servo.rb CHANGED
@@ -8,6 +8,6 @@ arduino = ArduinoFirmata.connect ARGV.shift
8
8
  loop do
9
9
  angle = rand 180
10
10
  puts angle
11
- arduino.servo_write 11, angle
11
+ arduino.servo_write 9, angle
12
12
  sleep 1
13
13
  end
@@ -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 test_digital_read
30
+ def test_digital_write
23
31
  0.upto(13).each do |pin|
24
- din = @arduino.digital_read pin
25
- assert [true,false].include? din
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
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require 'backports'
2
3
  require 'minitest/autorun'
3
4
 
4
5
  $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
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.7
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-03 00:00:00.000000000 Z
12
+ date: 2013-01-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: serialport