arduino_ir_remote 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 474128049fe277af132adf82a3a78e5ee0f9b5f9
4
+ data.tar.gz: eb628f354d318da0c68a3b79baa221029f17479e
5
+ SHA512:
6
+ metadata.gz: 2992062198ce3437f3a902f43be70eeff15165bc3b76e86798f85d99f57ea7837f156a507746bba120c332acebcc5f65497a954fce1431a12e57c737007ae264
7
+ data.tar.gz: 2db1350cc9e9a844d395c6d05c03a7cf2b14e172c99235bd9fa432a42a4e9b83f30c3ac83065a522d1a42fa1cbe8bcc981340aa2dd67658e75b6ed9efebe7fe4
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ InstalledFiles
7
+ _yardoc
8
+ coverage
9
+ doc/
10
+ lib/bundler/man
11
+ pkg
12
+ rdoc
13
+ spec/reports
14
+ test/tmp
15
+ test/version_tmp
16
+ tmp
17
+ .sass-cache
18
+ .ruby-version
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in arduino_ir_remote.gemspec
4
+ gemspec
data/History.txt ADDED
@@ -0,0 +1,4 @@
1
+ === 0.0.1 2013-08-11
2
+
3
+ * read write IR Data
4
+ * read analog sensors
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Sho Hashimoto
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,107 @@
1
+ Arduino IR::Remote
2
+ ==================
3
+ This Rubygem provides a wrapper for IR-Learning-Remote that has been built using the Arduino.
4
+
5
+ - https://github.com/shokai/arduino_ir_remote
6
+ - Read/Write IR Remote on CUI and WebUI
7
+ - [Arduinoで赤外線リモコン作ってWebから操作できるようにした](http://shokai.org/blog/archives/8012)
8
+
9
+
10
+ Installation
11
+ ------------
12
+
13
+ % gem install arduino_ir_remote
14
+
15
+
16
+ Dependencies
17
+ ------------
18
+
19
+ ### Requirements
20
+
21
+ - Mac or Linux
22
+ - Ruby 1.8.7 ~ 2.0.0
23
+ - [Arduino](http://arduino.cc) Micro or Leonard
24
+ - [38KHz IR Receiver](http://akizukidenshi.com/catalog/g/gI-00614/)
25
+ - IR LED
26
+ - [Temperature Sensor LM35DZ](http://akizukidenshi.com/catalog/g/gI-00116/)
27
+
28
+ ### Setup Arduino
29
+
30
+ - Firmware
31
+ - https://github.com/shokai/arduino_ir_remote/blob/master/arduino/arduino.ino
32
+ - IR LED
33
+ - Digital PIN 12
34
+ - IR Receiver
35
+ - Digital PIN 3
36
+ - Temperature Sensor
37
+ - Analog PIN 0
38
+
39
+ <img src="http://farm4.staticflickr.com/3779/9469310547_ef06fe7949.jpg">
40
+ <img src="http://farm4.staticflickr.com/3831/9472093512_fee45ca7c3.jpg">
41
+
42
+
43
+ arduino_ir_remote command
44
+ -------------------------
45
+
46
+ % arduino_ir_remote --help
47
+ % arduino_ir_remote --list
48
+
49
+ read IR
50
+
51
+ % arduino_ir_remote --read tv_on
52
+
53
+ write IR
54
+
55
+ % arduino_ir_remote --write tv_on
56
+
57
+
58
+ Gem Usage
59
+ ---------
60
+
61
+ ### Connect
62
+
63
+ ```ruby
64
+ require 'arduino_ir_remote'
65
+
66
+ ir = ArduinoIrRemote.connect # use default device
67
+ ir = ArduinoIrRemote.connect "/dev/tty.usb-devicename"
68
+ ```
69
+
70
+ ### Read IR DATA
71
+
72
+ ```ruby
73
+ ir.read do |data|
74
+ p data
75
+ end
76
+ ir.wait
77
+ ```
78
+
79
+ ### Write IR DATA
80
+
81
+ ```ruby
82
+ ir.write data
83
+ ir.wait
84
+ ```
85
+
86
+ ### Read Sensors
87
+
88
+ ```ruby
89
+ ir.temp_pin = 0 # set temperature sensor pin
90
+
91
+ loop do
92
+ 0.upto(5).each{ |i|
93
+ puts "[analog#{i}] #{ir.analog_read i}" # read analog input pin 0~5
94
+ }
95
+ puts "temp #{ir.temp_sensor}" # read temperature sensor
96
+ sleep 1
97
+ end
98
+ ```
99
+
100
+
101
+ Contributing
102
+ ------------
103
+ 1. Fork it
104
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
105
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
106
+ 4. Push to the branch (`git push origin my-new-feature`)
107
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,118 @@
1
+ #define IR_DATA_SIZE 768
2
+ byte ir_data[IR_DATA_SIZE];
3
+ unsigned int ir_index;
4
+ #define PIN_LED 13
5
+ #define PIN_IR_IN 3
6
+ #define PIN_IR_OUT 12
7
+
8
+ void setup(){
9
+ Serial.begin(57600);
10
+ pinMode(PIN_IR_IN, INPUT);
11
+ pinMode(PIN_IR_OUT, OUTPUT);
12
+ pinMode(PIN_LED, OUTPUT);
13
+ }
14
+
15
+ unsigned int analog_count = 0;
16
+ void loop(){
17
+ if(Serial.available()){
18
+ char recv = Serial.read();
19
+ process_input(recv);
20
+ }
21
+ else{
22
+ if(analog_count < 1){
23
+ for(byte i = 0; i < 6; i++){
24
+ Serial.print("ANALOG");
25
+ Serial.println(i);
26
+ Serial.println(analogRead(i));
27
+ }
28
+ }
29
+ analog_count += 1;
30
+ if(analog_count > 65534) analog_count = 0;
31
+ }
32
+ }
33
+
34
+ void ir_read(byte ir_pin){
35
+ unsigned int i, j;
36
+ for(i = 0; i < IR_DATA_SIZE; i++){
37
+ ir_data[i] = 0;
38
+ }
39
+ unsigned long now, last, start_at;
40
+ boolean stat;
41
+ start_at = micros();
42
+ while(stat = digitalRead(ir_pin)){
43
+ if(micros() - start_at > 2500000) return;
44
+ }
45
+ start_at = last = micros();
46
+ for(i = 0; i < IR_DATA_SIZE; i++){
47
+ for(j = 0; ; j++){
48
+ if(stat != digitalRead(ir_pin)) break;
49
+ if(j > 65534) return;
50
+ }
51
+ now = micros();
52
+ ir_data[i] = (now - last)/100;
53
+ last = now;
54
+ stat = !stat;
55
+ }
56
+ }
57
+
58
+ void ir_print(){
59
+ unsigned int i;
60
+ for(i = 0; i < IR_DATA_SIZE; i++){
61
+ Serial.print(ir_data[i]);
62
+ if(ir_data[i] < 1) break;
63
+ Serial.print(",");
64
+ }
65
+ Serial.println();
66
+ }
67
+
68
+ void ir_write(byte ir_pin){
69
+ unsigned int i;
70
+ unsigned long interval_sum, start_at;
71
+ interval_sum = 0;
72
+ start_at = micros();
73
+ for(i = 0; i < IR_DATA_SIZE; i++){
74
+ if(ir_data[i] < 1) break;
75
+ interval_sum += ir_data[i] * 100;
76
+ if(i % 2 == 0){
77
+ while(micros() - start_at < interval_sum){
78
+ digitalWrite(ir_pin, true);
79
+ delayMicroseconds(6);
80
+ digitalWrite(ir_pin, false);
81
+ delayMicroseconds(8);
82
+ }
83
+ }
84
+ else{
85
+ while(micros() - start_at < interval_sum);
86
+ }
87
+ }
88
+ }
89
+
90
+ void process_input(char input){
91
+ if(input == 'r'){
92
+ digitalWrite(PIN_LED, true);
93
+ ir_read(PIN_IR_IN);
94
+ Serial.println("READ");
95
+ ir_print();
96
+ digitalWrite(PIN_LED, false);
97
+ }
98
+ else if(input == 'w'){
99
+ for(ir_index = 0; ir_index < IR_DATA_SIZE; ir_index++){
100
+ ir_data[ir_index] = 0;
101
+ }
102
+ ir_index = 0;
103
+ }
104
+ else if(input == ','){
105
+ if(ir_index < IR_DATA_SIZE) ir_index += 1;
106
+ }
107
+ else if(input >= '0' && '9' >= input){
108
+ ir_data[ir_index] = ir_data[ir_index]*10 + (input - '0');
109
+ }
110
+ else if(input == 'W'){
111
+ digitalWrite(PIN_LED, true);
112
+ ir_write(PIN_IR_OUT);
113
+ ir_index = 0;
114
+ Serial.println("WRITE");
115
+ ir_print();
116
+ digitalWrite(PIN_LED, false);
117
+ }
118
+ }
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'arduino_ir_remote/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "arduino_ir_remote"
8
+ spec.version = ArduinoIrRemote::VERSION
9
+ spec.authors = ["Sho Hashimoto"]
10
+ spec.email = ["hashimoto@shokai.org"]
11
+ spec.description = %q{IR Learning Remote with Arduino and Ruby}
12
+ spec.summary = %q{This Rubygem provides a wrapper for IR-Learning-Remote that has been built using the Arduino. https://github.com/shokai/arduino_ir_remote}
13
+ spec.homepage = "https://github.com/shokai/arduino_ir_remote"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/).reject{|i| i=="Gemfile.lock" }
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "serialport"
22
+ spec.add_dependency "args_parser"
23
+ spec.add_dependency "event_emitter"
24
+ spec.add_dependency "hashie"
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.3"
27
+ spec.add_development_dependency "rake"
28
+ end
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
3
+ require 'arduino_ir_remote'
4
+ require 'args_parser'
5
+
6
+ args = ArgsParser.parse ARGV do
7
+ arg :arduino, "arduino port", :default => ArduinoIrRemote.list[0]
8
+ arg :read, "read IR Data", :alias => :r
9
+ arg :write, "write IR Data", :alias => :w
10
+ arg :list, "show list of IR Data"
11
+ arg :temp, "show temperature", :alias => :t
12
+ arg :version, "show version", :alias => :v
13
+ arg :help, "show help", :alias => :h
14
+ end
15
+
16
+ if args.has_option? :version
17
+ puts "Arduino IR Remote v#{ArduinoIrRemote::VERSION}"
18
+ exit
19
+ end
20
+
21
+ binname = File.basename __FILE__
22
+ if args.has_option? :help or
23
+ (!args.has_param?(:write) and !args.has_param?(:read) and
24
+ !args.has_option?(:list) and !args.has_option?(:temp))
25
+ STDERR.puts "Arduino IR Remote - https://github.com/shokai/arduino_ir_remote"
26
+ STDERR.puts "--"
27
+ STDERR.puts args.help
28
+ STDERR.puts
29
+ STDERR.puts "e.g."
30
+ STDERR.puts " % #{binname} --read tv_on"
31
+ STDERR.puts " % #{binname} --write tv_on"
32
+ exit
33
+ end
34
+
35
+ if args.has_option? :list
36
+ puts "~> #{ArduinoIrRemote::DATA_FILE}"
37
+ ArduinoIrRemote::DATA.each do |k,v|
38
+ puts %Q{"#{k}" : #{v.size} bytes}
39
+ end
40
+ exit
41
+ end
42
+
43
+ ir = ArduinoIrRemote.connect args[:arduino]
44
+ ir.temp_pin = 0
45
+
46
+ if args.has_option? :temp
47
+ puts ir.temp_sensor
48
+ exit
49
+ end
50
+
51
+ if args.has_param? :write
52
+ ir.on :write do |data|
53
+ p data
54
+ exit
55
+ end
56
+ unless ArduinoIrRemote::DATA.has_key? args[:write]
57
+ puts %Q{there is no data "#{args[:write]}"}
58
+ exit 1
59
+ end
60
+ puts %Q{Write "#{args[:write]}"}
61
+ ir.write ArduinoIrRemote::DATA[ args[:write] ]
62
+ ir.wait
63
+ end
64
+
65
+ if args.has_param? :read
66
+ ir.read do |data|
67
+ p data
68
+ if ArduinoIrRemote::DATA.has_key? args[:read]
69
+ puts %Q{overwrite "#{args[:read]}" ?}
70
+ print "[Y/n]\n> "
71
+ exit 1 if STDIN.gets.strip.downcase =~ /n/
72
+ end
73
+ ArduinoIrRemote::DATA[ args[:read] ] = data
74
+ File.open(ArduinoIrRemote::DATA_FILE, "w+") do |f|
75
+ f.write ArduinoIrRemote::DATA.to_h.to_yaml
76
+ end
77
+ puts %Q{"#{args[:read]}" saved!}
78
+ exit 1
79
+ end
80
+ puts "reading.."
81
+ ir.wait
82
+ end
@@ -0,0 +1,12 @@
1
+ require "serialport"
2
+ require "event_emitter"
3
+ require "hashie"
4
+ require "yaml"
5
+
6
+ require "arduino_ir_remote/version"
7
+ require "arduino_ir_remote/config"
8
+ require "arduino_ir_remote/ir_remote"
9
+ require "arduino_ir_remote/main"
10
+
11
+ module ArduinoIrRemote
12
+ end
@@ -0,0 +1,4 @@
1
+ module ArduinoIrRemote
2
+ DATA_FILE = File.expand_path '.ir_remote.yml', ENV['HOME']
3
+ DATA = Hashie::Mash.new YAML::load File.open(DATA_FILE).read
4
+ end
@@ -0,0 +1,83 @@
1
+ module ArduinoIrRemote
2
+ class Device
3
+ include EventEmitter
4
+ attr_accessor :temp_pin
5
+
6
+ def initialize(port)
7
+ @state = nil
8
+ @sp = SerialPort.new(port, 57600, 8, 1, SerialPort::NONE) # 57600bps, 8bit, stopbit1, parity-none
9
+ Thread.new do
10
+ loop do
11
+ process_input @sp.gets.strip
12
+ end
13
+ end
14
+ @temp_pin = 0
15
+ @analogs = Array.new 6, 0
16
+ sleep 3
17
+ end
18
+
19
+ public
20
+ def write(data)
21
+ "w#{data}W".split(//).each do |c|
22
+ @sp.write c
23
+ sleep 0.001
24
+ end
25
+ end
26
+
27
+ def read(&block)
28
+ once :__ir_read, &block if block_given?
29
+ @sp.write "r"
30
+ end
31
+
32
+ def analog_read(pin)
33
+ @analogs[pin]
34
+ end
35
+
36
+ def temp_sensor
37
+ analog_read(@temp_pin).to_f*5*100/1024
38
+ end
39
+
40
+ def wait(&block)
41
+ loop do
42
+ if block_given?
43
+ yield
44
+ else
45
+ sleep 1
46
+ end
47
+ end
48
+ end
49
+
50
+ private
51
+ def process_input(input)
52
+ case input
53
+ when "READ"
54
+ @state = :read
55
+ return
56
+ when "WRITE"
57
+ @state = :write
58
+ return
59
+ when /^ANALOG\d+$/
60
+ @state = input
61
+ end
62
+
63
+ case @state
64
+ when :read
65
+ if input =~ /^[\d,]+$/
66
+ emit :__ir_read, input
67
+ emit :read, input
68
+ end
69
+ when :write
70
+ if input =~ /^[\d,]+$/
71
+ emit :write, input
72
+ end
73
+ when /^ANALOG\d+$/
74
+ if input =~ /^\d+$/
75
+ pin = @state.scan(/(\d+)$/)[0][0].to_i
76
+ @analogs[pin] = input.to_i
77
+ end
78
+ else
79
+ end
80
+ emit :data, input
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,11 @@
1
+ module ArduinoIrRemote
2
+ def self.list
3
+ Dir.entries('/dev').grep(/tty\.?(usb|acm)/i).map{|fname| "/dev/#{fname}"}
4
+ end
5
+
6
+ def self.connect(port=nil)
7
+ port = list[0] unless port
8
+ raise ArgumentError, "IR Remote not found" unless port
9
+ ArduinoIrRemote::Device.new port || list[0]
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module ArduinoIrRemote
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,13 @@
1
+ $:.unshift File.expand_path '../lib', File.dirname(__FILE__)
2
+ require 'arduino_ir_remote'
3
+
4
+ ir = ArduinoIrRemote.connect ARGV.shift
5
+ ir.temp_pin = 0
6
+
7
+ loop do
8
+ 0.upto(5).each{ |i|
9
+ puts "[analog#{i}] #{ir.analog_read i}"
10
+ }
11
+ puts "temp #{ir.temp_sensor}"
12
+ sleep 1
13
+ end
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: arduino_ir_remote
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sho Hashimoto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: serialport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: args_parser
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: event_emitter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: hashie
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '1.3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: IR Learning Remote with Arduino and Ruby
98
+ email:
99
+ - hashimoto@shokai.org
100
+ executables:
101
+ - arduino_ir_remote
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - .gitignore
106
+ - Gemfile
107
+ - History.txt
108
+ - LICENSE.txt
109
+ - README.md
110
+ - Rakefile
111
+ - arduino/arduino.ino
112
+ - arduino_ir_remote.gemspec
113
+ - bin/arduino_ir_remote
114
+ - lib/arduino_ir_remote.rb
115
+ - lib/arduino_ir_remote/config.rb
116
+ - lib/arduino_ir_remote/ir_remote.rb
117
+ - lib/arduino_ir_remote/main.rb
118
+ - lib/arduino_ir_remote/version.rb
119
+ - samples/read_sensor.rb
120
+ homepage: https://github.com/shokai/arduino_ir_remote
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 2.0.5
141
+ signing_key:
142
+ specification_version: 4
143
+ summary: This Rubygem provides a wrapper for IR-Learning-Remote that has been built
144
+ using the Arduino. https://github.com/shokai/arduino_ir_remote
145
+ test_files: []