arduino_firmata 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/README.md +42 -23
- data/lib/arduino_firmata/arduino.rb +7 -0
- data/lib/arduino_firmata/version.rb +1 -1
- data/samples/README.md +1 -0
- data/samples/digital_read.rb +2 -2
- data/samples/on_digital_read.rb +20 -0
- metadata +2 -1
data/History.txt
CHANGED
data/README.md
CHANGED
@@ -14,16 +14,21 @@ Install
|
|
14
14
|
Requirements
|
15
15
|
------------
|
16
16
|
|
17
|
+
* Ruby 1.8.7+ or 1.9.2+
|
18
|
+
* Arduino (http://arduino.cc)
|
19
|
+
* testing with Arduino Duemillanove, UNO, Micro, Seeduino v2.
|
17
20
|
* Arduino Standard Firmata v2.2
|
18
21
|
* Arduino IDE -> [File] -> [Examples] -> [Firmata] -> [StandardFirmata]
|
19
|
-
* Ruby 1.8.7+
|
20
|
-
* Ruby 1.9.2+
|
21
22
|
|
22
23
|
|
23
24
|
Synopsis
|
24
25
|
--------
|
25
26
|
|
26
|
-
|
27
|
+
- https://github.com/shokai/arduino_firmata/tree/master/samples
|
28
|
+
|
29
|
+
### Setup
|
30
|
+
|
31
|
+
Connect
|
27
32
|
```ruby
|
28
33
|
require 'arduino_firmata'
|
29
34
|
|
@@ -37,6 +42,14 @@ Board Version
|
|
37
42
|
puts "firmata version #{arduino.version}"
|
38
43
|
```
|
39
44
|
|
45
|
+
Close
|
46
|
+
```ruby
|
47
|
+
arduino.close
|
48
|
+
```
|
49
|
+
|
50
|
+
|
51
|
+
### I/O
|
52
|
+
|
40
53
|
Digital Write
|
41
54
|
```ruby
|
42
55
|
arduino.digital_write 13, true
|
@@ -47,6 +60,12 @@ Digital Read
|
|
47
60
|
```ruby
|
48
61
|
arduino.pin_mode 7, ArduinoFirmata::INPUT
|
49
62
|
puts arduino.digital_read 7 # => true/false
|
63
|
+
|
64
|
+
arduino.on :digital_read do |pin, status|
|
65
|
+
if pin == 7
|
66
|
+
puts "digital pin #{pin} changed : #{status}"
|
67
|
+
end
|
68
|
+
end
|
50
69
|
```
|
51
70
|
|
52
71
|
Analog Write (PWM)
|
@@ -63,7 +82,7 @@ puts arduino.analog_read 0 # => 0 ~ 1023
|
|
63
82
|
|
64
83
|
arduino.on :analog_read 0 do |pin, value|
|
65
84
|
if pin == 0
|
66
|
-
puts "analog pin #{pin} changed #{value}"
|
85
|
+
puts "analog pin #{pin} changed : #{value}"
|
67
86
|
end
|
68
87
|
end
|
69
88
|
```
|
@@ -77,30 +96,18 @@ loop do
|
|
77
96
|
end
|
78
97
|
```
|
79
98
|
|
80
|
-
Close
|
81
|
-
```ruby
|
82
|
-
arduino.close
|
83
|
-
```
|
84
99
|
|
85
|
-
|
86
|
-
```ruby
|
87
|
-
ArduinoFirmata.connect do
|
88
|
-
puts "firmata version #{version}"
|
100
|
+
### Sysex
|
89
101
|
|
90
|
-
|
91
|
-
|
92
|
-
analog_write 11, an
|
93
|
-
sleep 0.01
|
94
|
-
end
|
95
|
-
end
|
96
|
-
```
|
102
|
+
- http://firmata.org/wiki/V2.1ProtocolDetails#Sysex_Message_Format
|
103
|
+
- https://github.com/shokai/arduino_firmata/tree/master/samples/sysex
|
97
104
|
|
98
|
-
Send
|
105
|
+
Send
|
99
106
|
```ruby
|
100
|
-
arduino.sysex 0x01, [13, 5, 2]
|
107
|
+
arduino.sysex 0x01, [13, 5, 2] # command, data_array
|
101
108
|
```
|
102
109
|
|
103
|
-
Regist
|
110
|
+
Regist Receive Event
|
104
111
|
```ruby
|
105
112
|
arduino.on :sysex do |command, data|
|
106
113
|
puts "command : #{command}"
|
@@ -108,8 +115,20 @@ arduino.on :sysex do |command, data|
|
|
108
115
|
end
|
109
116
|
```
|
110
117
|
|
111
|
-
see samples https://github.com/shokai/arduino_firmata/tree/master/samples
|
112
118
|
|
119
|
+
### Block Style
|
120
|
+
|
121
|
+
```ruby
|
122
|
+
ArduinoFirmata.connect do
|
123
|
+
puts "firmata version #{version}"
|
124
|
+
|
125
|
+
30.times do
|
126
|
+
an = analog_read 0
|
127
|
+
analog_write 11, an
|
128
|
+
sleep 0.01
|
129
|
+
end
|
130
|
+
end
|
131
|
+
```
|
113
132
|
|
114
133
|
Test
|
115
134
|
----
|
@@ -188,7 +188,14 @@ module ArduinoFirmata
|
|
188
188
|
if @execute_multi_byte_command != 0 and @wait_for_data == 0
|
189
189
|
case @execute_multi_byte_command
|
190
190
|
when DIGITAL_MESSAGE
|
191
|
+
digital_inputs = @digital_input_data.clone
|
191
192
|
@digital_input_data[@multi_byte_channel] = (@stored_input_data[0] << 7) + @stored_input_data[1]
|
193
|
+
0.upto(15).each do |i|
|
194
|
+
current = digital_read i
|
195
|
+
if current != ((digital_inputs[i >> 3] >> (i & 0x07)) & 0x01 > 0)
|
196
|
+
emit :digital_read, i, current
|
197
|
+
end
|
198
|
+
end
|
192
199
|
when ANALOG_MESSAGE
|
193
200
|
analog_value = (@stored_input_data[0] << 7) + @stored_input_data[1]
|
194
201
|
unless @analog_input_data[@multi_byte_channel] == analog_value
|
data/samples/README.md
CHANGED
data/samples/digital_read.rb
CHANGED
@@ -5,10 +5,10 @@ require 'arduino_firmata'
|
|
5
5
|
|
6
6
|
arduino = ArduinoFirmata.connect ARGV.shift
|
7
7
|
|
8
|
-
arduino.pin_mode
|
8
|
+
arduino.pin_mode 2, ArduinoFirmata::INPUT
|
9
9
|
|
10
10
|
loop do
|
11
|
-
if arduino.digital_read
|
11
|
+
if arduino.digital_read 2
|
12
12
|
puts "on"
|
13
13
|
arduino.digital_write 13, true
|
14
14
|
else
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#usr/bin/env ruby
|
2
|
+
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
3
|
+
require 'rubygems'
|
4
|
+
require 'arduino_firmata'
|
5
|
+
|
6
|
+
arduino = ArduinoFirmata.connect ARGV.shift
|
7
|
+
arduino.pin_mode 2, ArduinoFirmata::INPUT
|
8
|
+
|
9
|
+
arduino.on :digital_read do |pin, status|
|
10
|
+
if pin == 2
|
11
|
+
puts "digital pin #{pin} changed : #{status}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
led_stat = false
|
16
|
+
loop do
|
17
|
+
arduino.digital_write 13, led_stat
|
18
|
+
led_stat = !led_stat
|
19
|
+
sleep 1
|
20
|
+
end
|
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.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- samples/led_blink.rb
|
88
88
|
- samples/led_fade.rb
|
89
89
|
- samples/on_analog_read.rb
|
90
|
+
- samples/on_digital_read.rb
|
90
91
|
- samples/servo.rb
|
91
92
|
- samples/sinatra_arduino.rb
|
92
93
|
- samples/sysex/README.md
|