object_oriented_beaglebone_black 0.2.0 → 0.2.1
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b12eebdcfd145dcf383e623349d7f844241b2ad
|
4
|
+
data.tar.gz: 52b1e565447eda98535b8e03a7a8363d8d2a8d10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 673e08d66213879c0b2350598309a087161363dd0796e2ee08600d76dbbbcad768ce0bebb2e8a10910c0dab16486e047065de07195639ec3efa8b958cf99c4aa
|
7
|
+
data.tar.gz: 567ad8f836785de958d232f041440d3df89f40ababaae1b6c30032dcb4d0578e4da57efef0769baeca6096ffbd438b428eaff609035f6bd41f06b81c5204eddc
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
## object_oriented_beaglebone_black 0.0.2 (December 26, 2014) ##
|
2
|
+
|
3
|
+
* GPIO
|
4
|
+
|
5
|
+
* Analog input
|
6
|
+
|
7
|
+
* PWM
|
8
|
+
|
9
|
+
## object_oriented_beaglebone_black 0.1.0 ##
|
10
|
+
|
11
|
+
There is no 0.1.0. I simply made a mistake to change the version to 0.2.0, after changing the version to 0.1.1 in one commit.
|
12
|
+
|
13
|
+
## object_oriented_beaglebone_black 0.2.0 (September 26, 2015) ##
|
14
|
+
|
15
|
+
* PWM period can be set and read.
|
16
|
+
|
17
|
+
## object_oriented_beaglebone_black 0.2.1 (September 27, 2015) ##
|
18
|
+
|
19
|
+
* When the PWM period is set, the internal "duty" value is modified automatically to keep the same duty cycle.
|
20
|
+
|
21
|
+
Internally in BeagleBone Black, "duty" value is relative to "period" value.
|
22
|
+
|
23
|
+
e.g. For "period" = 1000, "duty" = 500 gives the duty cycle = 500 / 1000 = 0.5.
|
24
|
+
|
25
|
+
In version 0.2.0, when "period" is modified, "duty" is not modified. Hence, the duty cycle changes.
|
26
|
+
|
27
|
+
e.g. For the example above,
|
28
|
+
When "period" is modified to be 10000, the duty cycle has changed to 500 / 10000 = 0.05.
|
29
|
+
|
30
|
+
In version 0.2.1, when "period" is modified, "duty" is modified accordingly, in order to keep the same duty cycle.
|
31
|
+
|
32
|
+
e.g. For the example above,
|
33
|
+
When "period" is modified to be 10000, "duty" is modified to be 5000, which gives the duty cycle 5000 / 10000 = 0.5.
|
34
|
+
|
35
|
+
Note: This can be considered to be incompatible API change. However, at this point, it is not yet considered to be a stable public API. Hence, the MAJOR version is kept to be 0. (See, [Semantic Versioning](http://semver.org/))
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ObjectOrientedBeagleboneBlack
|
2
2
|
|
3
|
-
This is for using
|
3
|
+
This is for using BeagleBone Black in Object-Oriented way through Ruby code.
|
4
4
|
|
5
5
|
There are many Ruby projects in GitHub to do a similar thing.
|
6
6
|
But I have decided to develop my own from scratch this time instead of using an existing one like I always do.
|
@@ -50,63 +50,72 @@ Or install it yourself as:
|
|
50
50
|
|
51
51
|
## Usage
|
52
52
|
|
53
|
-
1. GPIO
|
53
|
+
1. GPIO
|
54
54
|
|
55
55
|
Example:
|
56
56
|
|
57
|
-
|
57
|
+
```ruby
|
58
|
+
require 'object_oriented_beaglebone_black'
|
58
59
|
|
59
|
-
|
60
|
-
|
60
|
+
led_gpio_pin_number = 60
|
61
|
+
button_gpio_pin_number = 15
|
61
62
|
|
62
|
-
|
63
|
+
led_gpio = ObjectOrientedBeagleboneBlack::Gpio.new(led_gpio_pin_number)
|
63
64
|
|
64
|
-
|
65
|
+
led_gpio.export
|
65
66
|
|
66
|
-
|
67
|
+
led_gpio.direction = ObjectOrientedBeagleboneBlack::IO::Direction::OUT
|
67
68
|
|
68
|
-
|
69
|
+
led_gpio.value = ObjectOrientedBeagleboneBlack::IO::Value::HIGH
|
69
70
|
|
70
|
-
|
71
|
+
led_gpio.value # Read the value. HIGH (1) as set above.
|
71
72
|
|
72
|
-
|
73
|
+
led_gpio.value = ObjectOrientedBeagleboneBlack::IO::Value::LOW
|
73
74
|
|
74
|
-
|
75
|
+
led_gpio.value # Read the value. LOW (0) as set above.
|
75
76
|
|
76
|
-
|
77
|
+
led_gpio.unexport
|
78
|
+
```
|
77
79
|
|
78
80
|
2. Analog input
|
81
|
+
|
79
82
|
Example:
|
80
83
|
|
81
|
-
|
84
|
+
```ruby
|
85
|
+
require 'object_oriented_beaglebone_black'
|
82
86
|
|
83
|
-
|
87
|
+
pin_key = "P9_40"
|
84
88
|
|
85
|
-
|
89
|
+
analog_input = ObjectOrientedBeagleboneBlack::AnalogInput.new(pin_key)
|
86
90
|
|
87
|
-
|
91
|
+
analog_input.raw_value # Read the raw voltage value in the range of 0 and 1.8[V].
|
88
92
|
|
89
|
-
|
93
|
+
analog_input.value # Read the relative value between 0 and 1.
|
94
|
+
```
|
90
95
|
|
91
96
|
3. PWM
|
92
97
|
|
93
98
|
Example:
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
require 'object_oriented_beaglebone_black'
|
94
102
|
|
95
|
-
|
96
|
-
|
97
|
-
pwm_pin_key = "P9_14"
|
103
|
+
pwm_pin_key = "P9_14"
|
98
104
|
|
99
|
-
|
105
|
+
pwm = ObjectOrientedBeagleboneBlack::Pwm.new(pwm_pin_key)
|
100
106
|
|
101
|
-
|
107
|
+
pwm.period = 1000 # Unit is [ns] (nano second)
|
102
108
|
|
103
|
-
|
109
|
+
pwm.period # Read the period. 1000[ns] as set above.
|
104
110
|
|
105
|
-
|
111
|
+
pwm.duty_cycle = 0.5
|
106
112
|
|
107
|
-
|
113
|
+
pwm.polarity # Read the polarity.
|
114
|
+
# The default is direct:
|
115
|
+
# ObjectOrientedBeagleboneBlack::Pwm::Polarity::DIRECT
|
108
116
|
|
109
|
-
|
117
|
+
pwm.duty_cycle # Read the duty cycle. 0.5 as set above.
|
118
|
+
```
|
110
119
|
|
111
120
|
## Contributing
|
112
121
|
|
@@ -56,7 +56,14 @@ module ObjectOrientedBeagleboneBlack
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def period=(period)
|
59
|
+
current_duty_cycle = self.duty_cycle
|
60
|
+
|
59
61
|
File.open(File.join(pwm_directory, "period"), "w") { |file| file.write(period) }
|
62
|
+
|
63
|
+
# Preserves the duty cycle:
|
64
|
+
# Note: Internally in BeagleBone Black, "duty" value is relative to "period" value.
|
65
|
+
# e.g. For "period" = 1000, "duty" = 500 gives the duty cycle = 500 / 1000 = 0.5.
|
66
|
+
self.duty_cycle = current_duty_cycle
|
60
67
|
end
|
61
68
|
|
62
69
|
# Unit: [ns] (nano second)
|
@@ -68,9 +68,15 @@ describe ObjectOrientedBeagleboneBlack::Pwm, pwm: true do
|
|
68
68
|
|
69
69
|
expect(Dir.exists?(File.join(@device_directory, "pwm_test_#{pwm_pin_key}.15"))).to be true
|
70
70
|
|
71
|
+
# Set the duty cycle before period is modified:
|
72
|
+
pwm.duty_cycle = 0.5
|
73
|
+
expect(pwm.duty_cycle).to eq(0.5)
|
74
|
+
|
71
75
|
pwm.period = 10000 # [ns]: nano second
|
72
76
|
|
73
77
|
expect(pwm.period).to eq(10000)
|
78
|
+
# The duty cycle should be preserved:
|
79
|
+
expect(pwm.duty_cycle).to eq(0.5)
|
74
80
|
|
75
81
|
end
|
76
82
|
|
@@ -90,10 +96,10 @@ describe ObjectOrientedBeagleboneBlack::Pwm, pwm: true do
|
|
90
96
|
|
91
97
|
expect(pwm.period).to eq(1000)
|
92
98
|
|
93
|
-
pwm.duty_cycle = 0.
|
99
|
+
pwm.duty_cycle = 0.25
|
94
100
|
|
95
101
|
expect(pwm.polarity).to eq(ObjectOrientedBeagleboneBlack::Pwm::Polarity::DIRECT)
|
96
|
-
expect(pwm.duty_cycle).to eq(0.
|
102
|
+
expect(pwm.duty_cycle).to eq(0.25)
|
97
103
|
|
98
104
|
end
|
99
105
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: object_oriented_beaglebone_black
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tadatoshi Takahashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- ".gitignore"
|
64
64
|
- ".ruby-gemset"
|
65
65
|
- ".ruby-version"
|
66
|
+
- CHANGELOG.md
|
66
67
|
- Gemfile
|
67
68
|
- LICENSE.txt
|
68
69
|
- README.md
|