farmbot-serial 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36f578bd91bd95febe44ce8f75b1590d668cbf99
4
- data.tar.gz: e5cdea88aa5cab14e18e939af4628df061b4ec24
3
+ metadata.gz: 401a1c1137c965d0ec54830d394d7ad3f832e57a
4
+ data.tar.gz: b4e397128ef3aecfdfe4b0268f4e7e485248c59a
5
5
  SHA512:
6
- metadata.gz: 6c0365da760d44e89efedfb3e2ea6355895fc9158a6b894671a289283dbd3dec851c45aafffce5ee092f8a2de080ef687aa655c464a7b8b382d4edcf98214ecb
7
- data.tar.gz: d88848b219d0dac50f3693fc2944b88d04ffa6a3ce04405fd4d2d1ee0f5b0dd97a8a495b94c050559d7f7da110307d668f48e7edf7d9392fd3c8bea9421d1698
6
+ metadata.gz: 9c8234d5dc44d3b9445c34e0128e7ca38d81b408bf04a957d0ccfd7464c9b1acf1c22e844ec691e1559ce24d38c916eda0124721e283f9804f3f55d9652c3802
7
+ data.tar.gz: 1eb264d3282a76da3cb5123dd9a411b684c0682dabf4f61d24cf986a06a59a4e4db1fdaed56d8ad6b78d885a8a8c9af5171d704f53bb47bca861176333a55288
@@ -0,0 +1 @@
1
+ To get started, <a href="https://www.clahub.com/agreements/FarmBot/farmbot-serial">sign the Contributor License Agreement</a>.
data/console.rb CHANGED
@@ -1,7 +1,20 @@
1
1
  require_relative 'lib/farmbot-serial'
2
2
  require 'pry'
3
+ # Defaults to '/dev/ttyACM0', can be configured.
3
4
 
4
- bot = FB::Arduino.new(serial_port: FB::DefaultSerialPort.new('/dev/ttyUSB0')) # Defaults to '/dev/ttyACM0', can be configured.
5
+ puts """
6
+ Select a port, or press enter for '/dev/ttyACM0'
7
+ 1. /dev/ttyUSB0
8
+ 2. /dev/ttyACM0
9
+ """
10
+ case gets.chomp
11
+ when "1"
12
+ port = "/dev/ttyUSB0"
13
+ else
14
+ port = "/dev/ttyACM0"
15
+ end
16
+
17
+ bot = FB::Arduino.new(serial_port: FB::DefaultSerialPort.new(port))
5
18
 
6
19
  puts """
7
20
  FARMBOT SERIAL SANDBOX. WELCOME!
@@ -22,7 +22,7 @@ module FB
22
22
  # every time the value is read. For this reason, we use ||= and not =.
23
23
  x1 ||= [(bot.current_position.x + (x || 0)), 0].max
24
24
  y1 ||= [(bot.current_position.y + (y || 0)), 0].max
25
- z1 ||= [(bot.current_position.z + (z || 0)), 0].max
25
+ z1 ||= (bot.current_position.z + (z || 0)) || 0
26
26
 
27
27
  "G00 X#{x1} Y#{y1} Z#{z1}"
28
28
  end
@@ -31,7 +31,7 @@ module FB
31
31
  def move_absolute(x: 0, y: 0, z: 0, s: 100)
32
32
  x = [x.to_i, 0].max
33
33
  y = [y.to_i, 0].max
34
- z = [z.to_i, 0].max
34
+ z = z.to_i || 0
35
35
  write { "G00 X#{x} Y#{y} Z#{z}" }
36
36
  end
37
37
 
@@ -50,10 +50,11 @@ module FB
50
50
  attr_reader :head, :tail
51
51
 
52
52
  def initialize(str)
53
- nodes = str.scan(/\d+|\D+/) # ["R", "01"]
53
+ nodes = str.scan(/[a-zA-Z]+|\-?\d+/) # ["R", "-19"], ["Z", "4"]
54
+
54
55
  @head, @tail = nodes.shift.to_sym, nodes.join(" ")
55
56
  # Coerce to ints if possible, since serial line is all string types.
56
- @tail = @tail.to_i if @tail.match(/^\d+$/)
57
+ @tail = @tail.to_i if @tail.match(/^\-?\d+$/)
57
58
  end
58
59
 
59
60
  def to_sym
@@ -26,11 +26,15 @@ describe FB::OutgoingHandler do
26
26
  expect(bot.next_cmd.to_s).to eq("G0 X4 Y5 Z6")
27
27
  end
28
28
 
29
- it 'never goes behind the 0 line' do
29
+ it 'never allows X / Y behind the 0 line' do
30
30
  handler.move_relative(x: -999, y: -999, z: -999)
31
31
  expect(bot.outbound_queue.first.value_of(:x)).to eq(0)
32
32
  expect(bot.outbound_queue.first.value_of(:y)).to eq(0)
33
- expect(bot.outbound_queue.first.value_of(:z)).to eq(0)
33
+ end
34
+
35
+ it 'allows Z to be negative' do
36
+ handler.move_relative(z: -999)
37
+ expect(bot.outbound_queue.first.value_of(:z)).to eq(-999)
34
38
  end
35
39
 
36
40
  it 'Moves absolute' do
@@ -41,11 +45,16 @@ describe FB::OutgoingHandler do
41
45
  expect(bot.next_cmd.to_s).to eq("G0 X7 Y8 Z9")
42
46
  end
43
47
 
44
- it 'Never goes farther than 0 when moving absolute' do
45
- handler.move_absolute(x: -987, y: -654, z: -321)
48
+ it 'Never sends X/Y behind 0' do
49
+ handler.move_absolute(x: -987, y: -654, z: 0)
46
50
  expect(bot.next_cmd.to_s).to eq("G0 X0 Y0 Z0")
47
51
  end
48
52
 
53
+ it 'sends Z to subzero coords' do
54
+ handler.move_absolute(x: 0, y: 0, z: -123)
55
+ expect(bot.next_cmd.to_s).to eq("G0 X0 Y0 Z-123")
56
+ end
57
+
49
58
  it 'homes x, y, z, all' do
50
59
  handler.home_x
51
60
  expect(bot.next_cmd.to_s).to eq("F11")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: farmbot-serial
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Evers
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-01 00:00:00.000000000 Z
12
+ date: 2015-10-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -132,6 +132,7 @@ extra_rdoc_files: []
132
132
  files:
133
133
  - ".gitignore"
134
134
  - ".rspec"
135
+ - CONTRIBUTING.md
135
136
  - README.md
136
137
  - Rakefile
137
138
  - console.rb
@@ -177,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
178
  version: '0'
178
179
  requirements: []
179
180
  rubyforge_project:
180
- rubygems_version: 2.4.6
181
+ rubygems_version: 2.4.8
181
182
  signing_key:
182
183
  specification_version: 4
183
184
  summary: Serial library for Farmbot
@@ -193,4 +194,3 @@ test_files:
193
194
  - spec/lib/arduino_spec.rb
194
195
  - spec/lib/gcode_spec.rb
195
196
  - spec/spec_helper.rb
196
- has_rdoc: