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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/duino.rb +125 -0
  3. metadata +58 -0
@@ -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
@@ -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: []