Allow speed on a per axis basis like the fw expects
parent
7dcb3df98d
commit
94314cce9d
|
@ -11,7 +11,10 @@ defmodule Farmbot.CeleryScript.AST.Node.MoveAbsolute do
|
||||||
{:ok, pos_b} <- ast_to_vec3(offset)
|
{:ok, pos_b} <- ast_to_vec3(offset)
|
||||||
do
|
do
|
||||||
pos = vec3_math(pos_a, :+, pos_b)
|
pos = vec3_math(pos_a, :+, pos_b)
|
||||||
case Farmbot.Firmware.move_absolute(pos, speed) do
|
speed_x = speed * (Farmbot.BotState.get_param(:movement_max_spd_x) || 1)
|
||||||
|
speed_y = speed * (Farmbot.BotState.get_param(:movement_max_spd_y) || 1)
|
||||||
|
speed_z = speed * (Farmbot.BotState.get_param(:movement_max_spd_z) || 1)
|
||||||
|
case Farmbot.Firmware.move_absolute(pos, speed_x, speed_y, speed_z) do
|
||||||
:ok -> {:ok, env}
|
:ok -> {:ok, env}
|
||||||
{:error, reason} -> {:error, reason, env}
|
{:error, reason} -> {:error, reason, env}
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,8 +5,8 @@ defmodule Farmbot.Firmware do
|
||||||
use Farmbot.Logger
|
use Farmbot.Logger
|
||||||
|
|
||||||
@doc "Move the bot to a position."
|
@doc "Move the bot to a position."
|
||||||
def move_absolute(vec3, speed) do
|
def move_absolute(vec3, x_speed, y_speed, z_speed) do
|
||||||
GenStage.call(__MODULE__, {:move_absolute, [vec3, speed]}, :infinity)
|
GenStage.call(__MODULE__, {:move_absolute, [vec3, x_speed, y_speed, z_speed]}, :infinity)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc "Calibrate an axis."
|
@doc "Calibrate an axis."
|
||||||
|
|
|
@ -36,7 +36,7 @@ defmodule Farmbot.Firmware.Handler do
|
||||||
@type pin_mode :: :digital | :analog
|
@type pin_mode :: :digital | :analog
|
||||||
|
|
||||||
@doc "Move to a position."
|
@doc "Move to a position."
|
||||||
@callback move_absolute(handler, vec3, speed) :: fw_ret_val
|
@callback move_absolute(handler, vec3, speed, speed, speed) :: fw_ret_val
|
||||||
|
|
||||||
@doc "Calibrate an axis."
|
@doc "Calibrate an axis."
|
||||||
@callback calibrate(handler, axis, speed) :: fw_ret_val
|
@callback calibrate(handler, axis, speed) :: fw_ret_val
|
||||||
|
|
|
@ -14,8 +14,8 @@ defmodule Farmbot.Firmware.StubHandler do
|
||||||
GenStage.start_link(__MODULE__, [])
|
GenStage.start_link(__MODULE__, [])
|
||||||
end
|
end
|
||||||
|
|
||||||
def move_absolute(handler, pos, speed) do
|
def move_absolute(handler, pos, x_speed, y_speed, z_speed) do
|
||||||
GenStage.call(handler, {:move_absolute, pos, speed})
|
GenStage.call(handler, {:move_absolute, pos, x_speed, y_speed, z_speed})
|
||||||
end
|
end
|
||||||
|
|
||||||
def calibrate(handler, axis, speed) do
|
def calibrate(handler, axis, speed) do
|
||||||
|
@ -97,7 +97,7 @@ defmodule Farmbot.Firmware.StubHandler do
|
||||||
{:noreply, [:idle], state}
|
{:noreply, [:idle], state}
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_call({:move_absolute, pos, _speed}, _from, state) do
|
def handle_call({:move_absolute, pos, _x_speed, _y_speed, _z_speed}, _from, state) do
|
||||||
{:reply, :ok, [{:report_current_position, pos.x, pos.y, pos.z}, :done], %{state | pos: pos}}
|
{:reply, :ok, [{:report_current_position, pos.x, pos.y, pos.z}, :done], %{state | pos: pos}}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ defmodule Farmbot.Firmware.UartHandler do
|
||||||
GenStage.start_link(__MODULE__, [])
|
GenStage.start_link(__MODULE__, [])
|
||||||
end
|
end
|
||||||
|
|
||||||
def move_absolute(handler, pos, speed) do
|
def move_absolute(handler, pos, x_speed, y_speed, z_speed) do
|
||||||
GenStage.call(handler, {:move_absolute, pos, speed})
|
GenStage.call(handler, {:move_absolute, pos, x_speed, y_speed, z_speed})
|
||||||
end
|
end
|
||||||
|
|
||||||
def calibrate(handler, axis, speed) do
|
def calibrate(handler, axis, speed) do
|
||||||
|
@ -204,8 +204,8 @@ defmodule Farmbot.Firmware.UartHandler do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def handle_call({:move_absolute, pos, speed}, _from, state) do
|
def handle_call({:move_absolute, pos, x_speed, y_speed, z_speed}, _from, state) do
|
||||||
wrote = "G00 X#{pos.x} Y#{pos.y} Z#{pos.z} A#{speed} B#{speed} C#{speed}"
|
wrote = "G00 X#{pos.x} Y#{pos.y} Z#{pos.z} A#{x_speed} B#{y_speed} C#{z_speed}"
|
||||||
do_write(wrote, state)
|
do_write(wrote, state)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue