rotor 0.1.9 → 0.2.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/rotor/gcode.rb +28 -19
- data/lib/rotor/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 113473297a421939fb5df7f1e6297aab7f7db0ab
|
4
|
+
data.tar.gz: daa003e3aa36d83c96410389d3ef85ec4ec54df1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98e16965a096bcdbe70c40e0147b791ae9b8193c1d0a9772f591448ce55dd75c5cbf94c5a4f500a1dd717553033e18ce2f85451aa364bb074a8112f8a2c948f6
|
7
|
+
data.tar.gz: 33a57e1c215bede215b05e6817021357c176c309b7240c3dc00512f7f2d700bd08bccb0af7486054c86eefba1b320face637b2d68ac0074fc7d6dd20d2f0cab4
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
Rotor (Ruby Motor)
|
2
2
|
==================
|
3
3
|
|
4
|
+
Version 0.2.0
|
5
|
+
-------------
|
6
|
+
|
7
|
+
My only experience with GCode is stuff that I have generated. However, upon experimenting with
|
8
|
+
various other types of GCode and generators, I have found that the repetition of G0 and G1 is not
|
9
|
+
always necessary. This version takes into account the previous command if no new one is provided for
|
10
|
+
G movements.
|
11
|
+
|
12
|
+
I've also added back in the movement delays that were causing some problems before.
|
13
|
+
|
4
14
|
Version 0.1.9
|
5
15
|
-------------
|
6
16
|
|
data/lib/rotor/gcode.rb
CHANGED
@@ -21,16 +21,17 @@ module Rotor
|
|
21
21
|
line_num = 0
|
22
22
|
|
23
23
|
@file.each_line do |line|
|
24
|
+
line[0..2] = @previous_command if line[0..2] == " "
|
24
25
|
parsed_line = parse_line(line)
|
25
26
|
|
26
27
|
line_num += 1
|
27
28
|
if parsed_line[:g]
|
28
29
|
#Move to this origin point.
|
29
30
|
if parsed_line[:g] == 0
|
30
|
-
puts "Move Stepper::#{parsed_line}"
|
31
|
+
puts "Move Stepper (#{line_num})::#{parsed_line}"
|
31
32
|
move_stepper(parsed_line,@fast_move)
|
32
33
|
elsif parsed_line[:g] == 1
|
33
|
-
puts "Move Stepper::#{parsed_line}"
|
34
|
+
puts "Move Stepper (#{line_num})::#{parsed_line}"
|
34
35
|
move_stepper(parsed_line,speed)
|
35
36
|
elsif parsed_line[:g] == 2 || parsed_line[:g] == 3
|
36
37
|
# Get my ARC on
|
@@ -85,14 +86,14 @@ module Rotor
|
|
85
86
|
arc_line[:x] = radius * Math.cos(current_degrees) + x_origin
|
86
87
|
arc_line[:y] = radius * Math.sin(current_degrees) + y_origin
|
87
88
|
arc_line[:z] = nil
|
88
|
-
puts "Move Arc Stepper (#{line_num})::#{arc_line}::#{start_angle},#{end_angle}"
|
89
|
+
# puts "Move Arc Stepper (#{line_num})::#{arc_line}::#{start_angle},#{end_angle}"
|
89
90
|
move_stepper(arc_line,speed)
|
90
91
|
end unless ignore
|
91
92
|
|
92
93
|
else
|
93
|
-
# puts "GLINE - Something else"
|
94
|
-
puts "DEBUG::GLINE - Something else::#{parsed_line}"
|
94
|
+
# puts "DEBUG::GLINE - Something else::#{parsed_line}"
|
95
95
|
end
|
96
|
+
@previous_command = line[0..2]
|
96
97
|
elsif parsed_line[:m]
|
97
98
|
if line[0..2] == "M03"
|
98
99
|
puts "Lowering marker"
|
@@ -101,13 +102,11 @@ module Rotor
|
|
101
102
|
puts "Lifting marker"
|
102
103
|
@servo.rotate(:up) if @servo
|
103
104
|
else
|
104
|
-
# puts "MLINE - Something else"
|
105
|
-
puts "DEBUG::MLINE - Something else::#{parsed_line}"
|
105
|
+
# puts "DEBUG::MLINE - Something else::#{parsed_line}"
|
106
106
|
end
|
107
107
|
else
|
108
|
-
# puts "Something else"
|
109
|
-
|
110
|
-
end
|
108
|
+
# puts "DEBUG::????? - Something else::#{parsed_line}"
|
109
|
+
end
|
111
110
|
end
|
112
111
|
end
|
113
112
|
|
@@ -115,12 +114,15 @@ module Rotor
|
|
115
114
|
|
116
115
|
def move_stepper(parsed_line,delay)
|
117
116
|
threads = []
|
117
|
+
comp_delay_calc = []
|
118
|
+
|
118
119
|
@x_move = nil
|
119
120
|
if parsed_line[:x]
|
120
121
|
@x_move = parsed_line[:x]
|
121
122
|
@x_move ||= 0
|
122
123
|
@x_move *= @scale
|
123
124
|
@x_movement = (@x_move - @x).abs
|
125
|
+
comp_delay_calc << @x_movement
|
124
126
|
end
|
125
127
|
|
126
128
|
@y_move = nil
|
@@ -129,6 +131,7 @@ module Rotor
|
|
129
131
|
@y_move ||= 0
|
130
132
|
@y_move *= @scale
|
131
133
|
@y_movement = (@y_move - @y).abs
|
134
|
+
comp_delay_calc << @y_movement
|
132
135
|
end
|
133
136
|
|
134
137
|
@z_move = nil
|
@@ -137,10 +140,12 @@ module Rotor
|
|
137
140
|
@z_move ||= 0
|
138
141
|
@z_move *= @scale
|
139
142
|
@z_movement = (@z_move - @z).abs
|
143
|
+
comp_delay_calc << @z_movement
|
140
144
|
end
|
141
145
|
|
142
|
-
|
143
146
|
if parsed_line[:x]
|
147
|
+
x_delay = comp_delay_calc.max * delay / @x_movement
|
148
|
+
x_delay = delay if x_delay == 0.0
|
144
149
|
if @x_move.to_f < @x #move to the right
|
145
150
|
if @stepper_x # && @stepper_x.at_safe_area?
|
146
151
|
threads << Thread.new { @stepper_x.forward(delay, @x_movement) }
|
@@ -152,36 +157,40 @@ module Rotor
|
|
152
157
|
end unless @x_movement == 0
|
153
158
|
@x = @x_move
|
154
159
|
end
|
160
|
+
@x_move ||= @x
|
155
161
|
|
156
162
|
if parsed_line[:y]
|
163
|
+
y_delay = comp_delay_calc.max * delay / @y_movement
|
164
|
+
y_delay = delay if y_delay == 0.0
|
157
165
|
if @y_move.to_f < @y #move to the right
|
158
166
|
if @stepper_y # && @stepper_y.at_safe_area?
|
159
|
-
threads << Thread.new { @stepper_y.forward(
|
167
|
+
threads << Thread.new { @stepper_y.forward(y_delay, @y_movement) }
|
160
168
|
end
|
161
169
|
elsif @y_move.to_f > @y #move to the left
|
162
170
|
if @stepper_y # && @stepper_y.at_safe_area?
|
163
|
-
threads << Thread.new { @stepper_y.backwards(
|
171
|
+
threads << Thread.new { @stepper_y.backwards(y_delay, @y_movement) }
|
164
172
|
end
|
165
173
|
end unless @y_movement == 0
|
166
174
|
@y = @y_move
|
167
175
|
end
|
176
|
+
@y_move ||= @y
|
168
177
|
|
169
178
|
if parsed_line[:z]
|
179
|
+
z_delay = comp_delay_calc.max * delay / @z_movement
|
180
|
+
z_delay = delay if z_delay == 0.0
|
170
181
|
if @z_move.to_f > @z #move to the right
|
171
182
|
if @stepper_z # && @stepper_z.at_safe_area?
|
172
|
-
threads << Thread.new { @stepper_z.forward(
|
183
|
+
threads << Thread.new { @stepper_z.forward(z_delay, @z_movement) }
|
173
184
|
end
|
174
185
|
elsif @z_move.to_f < @z #move to the left
|
175
186
|
if @stepper_z # && @stepper_z.at_safe_area?
|
176
|
-
threads << Thread.new { @stepper_z.backwards(
|
187
|
+
threads << Thread.new { @stepper_z.backwards(z_delay, @z_movement) }
|
177
188
|
end
|
178
189
|
end unless @z_movement == 0
|
179
190
|
@z = @z_move
|
180
|
-
end
|
181
|
-
|
182
|
-
sleep (delay * 500) if @x_move == 0.0 && @y_move == 0.0 && @z_move > 0.0
|
191
|
+
end
|
192
|
+
@z_move ||= @z
|
183
193
|
threads.each { |thr| thr.join }
|
184
|
-
sleep (delay * 500) if @x_move == 0.0 && @y_move == 0.0 && @z_move > 0.0
|
185
194
|
File.open("output.txt", 'a') { |file| file.write("#{@x_move},#{@y_move},#{@z_move},#{@x_movement},#{@y_movement},#{@z_movement}\n") } if File.exists?("output.txt")
|
186
195
|
end
|
187
196
|
|
data/lib/rotor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rotor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kobaltz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|