duino 0.5.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.
- checksums.yaml +7 -0
- data/lib/duino.rb +125 -0
- metadata +58 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 541cb7753894aa33260eb79300d7f2cc8625a2e3
|
4
|
+
data.tar.gz: ed8ed2c0d1060859ba3714954986382737b24c23
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a5d37558a3580f67cf1b11c8391f9f142ca2bea31ddb09f91e18ac92971da46d1e4a83b2ce4d42e3fa7bfe6faa71cb1757640cc8f941c12dd50ce1d5d5bf8ce7
|
7
|
+
data.tar.gz: 1f7f63f63fb2ec4efdbb9feaec01fb7a8e1fe7ca2be0204bd8316997f828f28593d5c7a4b11e60f9018750563ef09a2b8874e6b9802883bda4caf6d7628badf6
|
data/lib/duino.rb
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'serialport'
|
2
|
+
|
3
|
+
class Duino
|
4
|
+
def initialize(port, baudrate=115200)
|
5
|
+
data_bits = 8
|
6
|
+
stop_bits = 1
|
7
|
+
parity = SerialPort::NONE
|
8
|
+
|
9
|
+
@serial = SerialPort.new(port, baudrate, data_bits, stop_bits, parity)
|
10
|
+
@serial.read_timeout = 2
|
11
|
+
@serial.sync
|
12
|
+
@port = port
|
13
|
+
@output_pins = []
|
14
|
+
@input_pins = []
|
15
|
+
@pin_states = {}
|
16
|
+
|
17
|
+
puts "Initialized"
|
18
|
+
end
|
19
|
+
|
20
|
+
def to_s
|
21
|
+
"Arduino is on port #{@port} at #{@serial.baud} baudrate"
|
22
|
+
end
|
23
|
+
|
24
|
+
def digital_output(*pin_list)
|
25
|
+
send_data(pin_list.length)
|
26
|
+
if(pin_list.class == Array)
|
27
|
+
@output_pins = pin_list
|
28
|
+
pin_list.each do |pin|
|
29
|
+
send_pin(pin)
|
30
|
+
end
|
31
|
+
else
|
32
|
+
raise ArgumentError, "Arguments must be a list of pin numbers"
|
33
|
+
end
|
34
|
+
return pin_list
|
35
|
+
end
|
36
|
+
|
37
|
+
def digital_input(*pin_list)
|
38
|
+
send_data(pin_list.length)
|
39
|
+
if(pin_list.class == Array)
|
40
|
+
@input_pins = pin_list
|
41
|
+
pin_list.each do |pin|
|
42
|
+
send_pin(pin)
|
43
|
+
end
|
44
|
+
else
|
45
|
+
raise ArgumentError, "Arguments must be a list of pin numbers"
|
46
|
+
end
|
47
|
+
return pin_list
|
48
|
+
end
|
49
|
+
|
50
|
+
def set_high(pin)
|
51
|
+
save_state(pin, true)
|
52
|
+
send_data(1)
|
53
|
+
send_pin(pin)
|
54
|
+
end
|
55
|
+
|
56
|
+
def set_low(pin)
|
57
|
+
save_state(pin, false)
|
58
|
+
send_data(0)
|
59
|
+
send_pin(pin)
|
60
|
+
end
|
61
|
+
|
62
|
+
def save_state(pin, state)
|
63
|
+
@pin_states[pin.to_s] = state
|
64
|
+
end
|
65
|
+
|
66
|
+
def get_state(pin) # Returns true if high and false if low.
|
67
|
+
send_data(2)
|
68
|
+
send_pin(pin)
|
69
|
+
|
70
|
+
while true
|
71
|
+
rval = @serial.getbyte()
|
72
|
+
if(rval == 0)
|
73
|
+
return("Low")
|
74
|
+
end
|
75
|
+
if(rval == 1)
|
76
|
+
return("High")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def analog_write(pin, value)
|
82
|
+
send_data(3)
|
83
|
+
send_pin(pin)
|
84
|
+
send_data((value / 16).to_s(16))
|
85
|
+
send_data((value % 16).to_s(16))
|
86
|
+
end
|
87
|
+
|
88
|
+
def analog_read(pin)
|
89
|
+
send_data(4)
|
90
|
+
send_pin(pin)
|
91
|
+
get_data()
|
92
|
+
end
|
93
|
+
|
94
|
+
def turn_off
|
95
|
+
@output_pins.each do |pin|
|
96
|
+
set_low(pin)
|
97
|
+
end
|
98
|
+
puts "All pins set to low"
|
99
|
+
end
|
100
|
+
|
101
|
+
def close
|
102
|
+
send_data(5)
|
103
|
+
@serial.dtr = (0)
|
104
|
+
@serial.close
|
105
|
+
puts "Connection closed"
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
|
110
|
+
def send_pin(pin)
|
111
|
+
send_data(pin)
|
112
|
+
end
|
113
|
+
|
114
|
+
def send_data(serial_data)
|
115
|
+
while true
|
116
|
+
break if(get_data() == "?")
|
117
|
+
end
|
118
|
+
@serial.write serial_data.chr
|
119
|
+
end
|
120
|
+
|
121
|
+
def get_data
|
122
|
+
clean_data = @serial.readlines()
|
123
|
+
clean_data = clean_data.join("").gsub("\n","").gsub("\r","")
|
124
|
+
end
|
125
|
+
end
|
metadata
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: duino
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James L Wren
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-04-05 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: '1.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
description:
|
28
|
+
email: jameslwren@gmail.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/duino.rb
|
34
|
+
homepage: https://github.com/jameslwren/duino
|
35
|
+
licenses:
|
36
|
+
- MIT
|
37
|
+
metadata: {}
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options: []
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
requirements: []
|
53
|
+
rubyforge_project:
|
54
|
+
rubygems_version: 2.5.1
|
55
|
+
signing_key:
|
56
|
+
specification_version: 4
|
57
|
+
summary: Arduino Prototyping API for Ruby
|
58
|
+
test_files: []
|