intel_galileo 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,19 +3,26 @@ require File.dirname(__FILE__) + "/intel_galileo/gpio"
3
3
  require File.dirname(__FILE__) + "/intel_galileo/pin"
4
4
  require File.dirname(__FILE__) + "/intel_galileo/analog_in_pin"
5
5
  require File.dirname(__FILE__) + "/intel_galileo/digital_pin"
6
+ require File.dirname(__FILE__) + "/intel_galileo/pwm"
6
7
 
7
8
  module IntelGalileo
8
9
  DIGITAL_PINS = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
9
10
  DIGITAL_GPIOS = ["50","51","32","18","28","17","24","27","26","19","16","25","38","39"]
10
11
 
11
- ANALOG_IN_PINS = ["A0","A1","A2","A3","A4","A5"]
12
- MUX_GPIOS = ["37","36","23","22","21","20"]
12
+ ANALOG_IN_PINS = ["A0","A1","A2","A3","A4","A5"]
13
+ ANALOG_IN_MUX_GPIOS = ["37","36","23","22","21","20"]
13
14
 
15
+ PWM_GPIO_PINS = { 3 => 3, 5 => 5, 6 => 6, 9 => 1, 10 => 7, 11 => 4 }
16
+
14
17
  def self.digital_pin2gpio(pin)
15
18
  DIGITAL_GPIOS[DIGITAL_PINS.index(pin)]
16
19
  end
17
20
 
18
21
  def self.analog_in_pin2mux(pin)
19
- MUX_GPIOS[ANALOG_IN_PINS.index(pin)]
22
+ ANALOG_IN_MUX_GPIOS[ANALOG_IN_PINS.index(pin)]
23
+ end
24
+
25
+ def self.pin2pwm(pin)
26
+ PWM_GPIO_PINS[pin]
20
27
  end
21
28
  end
@@ -2,11 +2,7 @@ module IntelGalileo
2
2
  class AnalogInPin < Pin
3
3
  def initialize(pin)
4
4
  @pin = pin
5
- @mux_gpio = IntelGalileo::Gpio.new(IntelGalileo.analog_in_pin2mux(pin))
6
- @mux_gpio.ensureDrive('strong')
7
- @mux_gpio.ensureDirection('out')
8
- @mux_gpio.write(0)
9
- @direction = nil
5
+ set_mux_gpio(pin)
10
6
  end
11
7
 
12
8
  def read
@@ -16,5 +12,18 @@ module IntelGalileo
16
12
  puts "Reading"
17
13
  return value
18
14
  end
15
+
16
+ private
17
+
18
+ def get_mux_gpio(pin)
19
+ IntelGalileo::Gpio.new(IntelGalileo.analog_in_pin2mux(pin))
20
+ end
21
+
22
+ def set_mux_gpio(pin)
23
+ mux_gpio = get_mux_gpio(pin)
24
+ mux_gpio.ensureDrive('strong')
25
+ mux_gpio.ensureDirection('out')
26
+ mux_gpio.write(0)
27
+ end
19
28
  end
20
29
  end
@@ -1,16 +1,23 @@
1
1
  module IntelGalileo
2
2
  class DigitalPin < Pin
3
+ attr_reader :gpio
3
4
  def initialize(pin)
4
- @gpio = IntelGalileo::Gpio.new(IntelGalileo.digital_pin2gpio(pin))
5
+ @gpio = get_gpio(pin)
5
6
  @direction = nil
6
7
  end
7
8
 
8
- def read
9
+ def read
9
10
  @gpio.read()
10
11
  end
11
12
 
12
13
  def write(value)
13
14
  @gpio.write(value)
14
15
  end
16
+
17
+ private
18
+
19
+ def get_gpio(pin)
20
+ IntelGalileo::Gpio.new(IntelGalileo.digital_pin2gpio(pin))
21
+ end
15
22
  end
16
23
  end
@@ -0,0 +1,64 @@
1
+ module IntelGalileo
2
+ class Pwm
3
+ def initialize(pin)
4
+ @pwm = get_pwm(pin)
5
+ self.enable()
6
+ end
7
+
8
+ def enable
9
+ export unless exported?
10
+ end
11
+
12
+ def disable
13
+ unexport unless ! exported?
14
+ end
15
+
16
+ # period => 1ms = 1000000
17
+ def on(percent_time_on, period = 1000000)
18
+ write_period(period)
19
+ write_duty_cycle(period / 100 * percent_time_on)
20
+ end
21
+
22
+ def off
23
+ write_duty_cycle(0)
24
+ end
25
+
26
+ private
27
+
28
+ def write_duty_cycle(duty_cycle)
29
+ f = File.open("/sys/class/pwm/pwmchip0/pwm#{@pwm}/duty_cycle", 'w')
30
+ f.write(duty_cycle)
31
+ f.close
32
+ end
33
+
34
+ def write_period(period)
35
+ f = File.open("/sys/class/pwm/pwmchip0/pwm#{@pwm}/period", 'w')
36
+ f.write(period)
37
+ f.close
38
+ end
39
+
40
+ def get_pwm(pin)
41
+ IntelGalileo.pin2pwm(pin)
42
+ end
43
+
44
+ def exported?
45
+ File.exists?("/sys/class/pwm/pwmchip0/pwm#{@pwm}/enable")
46
+ end
47
+
48
+ def export
49
+ f = File.open('/sys/class/pwm/pwmchip0/export', 'w')
50
+ f.write(@pwm)
51
+ f.close
52
+
53
+ f = File.open("/sys/class/pwm/pwmchip0/pwm#{@pwm}/enable", 'w')
54
+ f.write(1)
55
+ f.close
56
+ end
57
+
58
+ def unexport
59
+ f = File.open('/sys/class/pwm/pwmchip0/unexport', 'w')
60
+ f.write(@pwm)
61
+ f.close
62
+ end
63
+ end
64
+ end
@@ -1,3 +1,3 @@
1
1
  module IntelGalileo
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intel_galileo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
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: 2014-03-10 00:00:00.000000000 Z
12
+ date: 2014-03-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -43,6 +43,38 @@ dependencies:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: fakefs
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: mocha
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
46
78
  description: Gem for interacting with Intel Galileo board
47
79
  email:
48
80
  - misza222@gmail.com
@@ -52,10 +84,10 @@ extra_rdoc_files: []
52
84
  files:
53
85
  - lib/intel_galileo.rb
54
86
  - lib/intel_galileo/analog_in_pin.rb
55
- - lib/intel_galileo/analog_out_pin.rb
56
87
  - lib/intel_galileo/digital_pin.rb
57
88
  - lib/intel_galileo/gpio.rb
58
89
  - lib/intel_galileo/pin.rb
90
+ - lib/intel_galileo/pwm.rb
59
91
  - lib/intel_galileo/version.rb
60
92
  homepage: https://github.com/itsudo/intel_galileo
61
93
  licenses:
@@ -69,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
101
  requirements:
70
102
  - - ! '>='
71
103
  - !ruby/object:Gem::Version
72
- version: '0'
104
+ version: 1.9.2
73
105
  required_rubygems_version: !ruby/object:Gem::Requirement
74
106
  none: false
75
107
  requirements:
File without changes