arduino_firmata 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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