File tree Expand file tree Collapse file tree 4 files changed +112
-0
lines changed Expand file tree Collapse file tree 4 files changed +112
-0
lines changed Original file line number Diff line number Diff line change 1
1
# rpio.lua
2
2
Pure Lua Raspberry Pi GPIO library
3
+
4
+ ``` lua
5
+ local rpio = require ' rpio'
6
+ local gpio = rpio (12 )
7
+
8
+ gpio .set_direction (' out' )
9
+ gpio .write (1 )
10
+
11
+ gpio .set_direction (' in' )
12
+ print (gpio .read ())
13
+ ```
14
+
Original file line number Diff line number Diff line change
1
+ package = ' rpio'
2
+ version = ' git-0'
3
+ source = {
4
+ url = ' git://github.com/ryanplusplus/rpio.lua.git'
5
+ }
6
+ description = {
7
+ summary = ' Pure Lua Raspberry Pi GPIO library' ,
8
+ homepage = ' https://github.com/ryanplusplus/rpio.lua/' ,
9
+ license = ' MIT <http://opensource.org/licenses/MIT>'
10
+ }
11
+ dependencies = {
12
+ ' lua >= 5.1'
13
+ }
14
+ build = {
15
+ type = ' builtin' ,
16
+ modules = {
17
+ [' rpio' ] = ' rpio.lua'
18
+ }
19
+ }
20
+
Original file line number Diff line number Diff line change
1
+ package = ' rpio'
2
+ version = ' 1.0-0'
3
+ source = {
4
+ url = ' https://github.com/ryanplusplus/rpio.lua/archive/v1.0-0.tar.gz' ,
5
+ dir = ' rpio.lua-1.0-0/src'
6
+ }
7
+ description = {
8
+ summary = ' Pure Lua Raspberry Pi GPIO library' ,
9
+ homepage = ' https://github.com/ryanplusplus/rpio.lua/' ,
10
+ license = ' MIT <http://opensource.org/licenses/MIT>'
11
+ }
12
+ dependencies = {
13
+ ' lua >= 5.1'
14
+ }
15
+ build = {
16
+ type = ' builtin' ,
17
+ modules = {
18
+ [' rpio' ] = ' rpio.lua'
19
+ }
20
+ }
21
+
Original file line number Diff line number Diff line change
1
+ local gpio_subsystem = ' /sys/class/gpio/'
2
+
3
+ local function write (path , value )
4
+ local f = io.open (path , ' a+' )
5
+ f :write (tostring (value ))
6
+ f :close ()
7
+ end
8
+
9
+ local function read (path )
10
+ local f = io.popen (' cat ' .. path , ' r' )
11
+ local value = f :read (' *a' )
12
+ f :close ()
13
+ return value
14
+ end
15
+
16
+ local function exists (path )
17
+ local f = io.open (path )
18
+ if f then
19
+ f :close ()
20
+ return true
21
+ else
22
+ return false
23
+ end
24
+ end
25
+
26
+ local function ready (device )
27
+ return pcall (function ()
28
+ write (device .. ' value' , 0 )
29
+ end )
30
+ end
31
+
32
+ return function (which )
33
+ local device = gpio_subsystem .. ' gpio' .. which .. ' /'
34
+
35
+ if exists (device ) then
36
+ write (gpio_subsystem .. ' unexport' , which )
37
+ end
38
+
39
+ write (gpio_subsystem .. ' export' , which )
40
+
41
+ while not ready (device ) do
42
+ os.execute (' sleep 0.001' )
43
+ end
44
+
45
+ return {
46
+ set_direction = function (direction )
47
+ write (device .. ' direction' , direction )
48
+ end ,
49
+
50
+ write = function (value )
51
+ write (device .. ' value' , value )
52
+ end ,
53
+
54
+ read = function ()
55
+ return read (device .. ' value' )
56
+ end
57
+ }
58
+ end
59
+
You can’t perform that action at this time.
0 commit comments