raspi-gpio 1.0.0

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/raspi-gpio.rb +69 -0
  3. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0ad59ed3ff2152b5b518c09e5a1c174aa345645fe28a59e46e10c4a1b9d02830
4
+ data.tar.gz: fb9f1fbac3770add6a2100e947c07657913444ea8c35a85806e276c7a0c78f4d
5
+ SHA512:
6
+ metadata.gz: dbc135c394dd882cfca0169856a2f6994628bc129f38f6d4af0ff03e235a2e4ed113a052fef3c772584bded10b4f238c3972dd80cc37ad11256fdede336380e0
7
+ data.tar.gz: 2120f9206a0ba4236a0280252ac4c4f1b33a4d66f88bfd19ca218ba9a3d7e2c5866136781dba9e06f9b309d1c95354ed7e8b8102891a2e1acf28b785520714b8
data/lib/raspi-gpio.rb ADDED
@@ -0,0 +1,69 @@
1
+ # GPIO core library path
2
+ LIB_PATH = '/sys/class/gpio'
3
+
4
+ # Shortcuts for pin values
5
+ LOW = 0
6
+ HIGH = 1
7
+
8
+ IN = 'in'
9
+ OUT = 'out'
10
+
11
+ # Exception to handle unknown pin mode (not 'in' or 'out')
12
+ class UnknownMode < StandardError
13
+ end
14
+
15
+ class NotOutMode < StandardError
16
+ end
17
+
18
+ # Exception to handle bad pin value (not 0 or 1)
19
+ class BadValue < StandardError
20
+ end
21
+
22
+ # GPIO class
23
+ class GPIO
24
+
25
+ # Initialize the GPIO pin
26
+ #
27
+ # @param pin [Integer] GPIO pin to use
28
+ # @param mode [String, nil] pin mode ('in' or 'out')
29
+ def initialize(pin, mode = OUT)
30
+ @pin = pin
31
+ begin
32
+ File.open("#{LIB_PATH}/export", 'w') do |file|
33
+ file.write(@pin)
34
+ end
35
+ rescue Errno::EBUSY
36
+ # -
37
+ end
38
+ @mode = mode
39
+ end
40
+
41
+ # Set the pin mode
42
+ #
43
+ # @param mode [String] pin mode ('in' or 'out')
44
+ def set_mode(mode)
45
+ raise UnknownMode, "gpio error : unknown mode #{mode}" unless mode == IN or mode == OUT
46
+ File.open("#{LIB_PATH}/gpio#{@pin}/direction", 'w') do |file|
47
+ file.write(mode)
48
+ end
49
+ @mode = mode
50
+ end
51
+
52
+ # Read the value of the pin
53
+ #
54
+ # @return [Boolean]
55
+ def get_value
56
+ File.open("#{LIB_PATH}/gpio#{@pin}/value", 'r').read
57
+ end
58
+
59
+ # Set a value to the pin
60
+ #
61
+ # @param v [Integer] the value (0 or 1)
62
+ def set_value(v)
63
+ raise NotOutMode, "error : mode isn't OUT" unless @mode == OUT
64
+ raise BadValue, "error : bad pin value" unless v.between? 0,1
65
+ File.open("#{LIB_PATH}/gpio#{@pin}/value", 'w') do |file|
66
+ file.write(v)
67
+ end
68
+ end
69
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: raspi-gpio
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Exybore
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-20 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple and light interface to interact with GPIO pins of the Raspberry
14
+ Pi.
15
+ email: exybore@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/raspi-gpio.rb
21
+ homepage: https://github.com/exybore/raspi-gpio-rb
22
+ licenses:
23
+ - MIT
24
+ metadata:
25
+ source_code_uri: https://github.com/exybore/raspi-gpio-rb
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubygems_version: 3.0.1
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Simple & light Raspberry Pi GPIO interface.
45
+ test_files: []