Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- xPos = 0
- yPos = 0
- xSize = 0
- ySize = 0
- speed = 0
- function resetOutputs()
- redstone.setOutput("left", false) -- Direction
- redstone.setOutput("right", false) -- Inversion
- redstone.setOutput("back", false) -- Brake
- end
- function invertMovement(invert)
- if not invert then
- redstone.setOutput("right", false)
- else
- redstone.setOutput("right", true)
- end
- end
- function goToPosition(xTarget, yTarget)
- local xDistance = xTarget - xPos
- local yDistance = yTarget - yPos
- local time = 0
- resetOutputs()
- print("Moving to Position...")
- print("Distances XY: " .. xDistance .. " " .. yDistance)
- if xDistance ~= 0 then
- if xDistance < 0 then
- invertMovement(true) -- Invert Movement
- else
- invertMovement(false)
- end
- redstone.setOutput("back", true) -- Start Movement
- time = math.abs(xDistance / speed)
- os.sleep(time)
- redstone.setOutput("back", false)
- xPos = xTarget
- end
- if yDistance ~= 0 then
- if yDistance < 0 then
- invertMovement(true) -- Invert Movement
- else
- invertMovement(false)
- end
- redstone.setOutput("left", true)
- redstone.setOutput("back", true)
- time = math.abs(yDistance / speed)
- os.sleep(time)
- redstone.setOutput("back", false)
- yPos = yTarget
- end
- resetOutputs()
- end
- function farm()
- for x = 0, (xSize - 1), 1 do
- os.sleep(1.5)
- goToPosition(x, ySize)
- goToPosition(x, 0)
- end
- end
- function calibrate()
- resetOutputs()
- redstone.setOutput("back", true)
- while true do
- os.sleep(1 / speed)
- if(redstone.getInput("top")) then
- redstone.setOutput("back", false)
- break
- end
- xSize = xSize + 1
- xPos = xPos + 1
- end
- redstone.setOutput("left", true)
- redstone.setOutput("back", true)
- while true do
- os.sleep(1 / speed)
- if(redstone.getInput("top")) then
- redstone.setOutput("back", false)
- break
- end
- ySize = ySize + 1
- yPos = yPos + 1
- end
- goToPosition(0, 0)
- resetOutputs()
- end
- function init()
- term.clear()
- io.write("Input RPM: ")
- rpm = tonumber(read()) -- Save current RPM, used for calculating travel time.
- speed = 0.0385 * rpm
- end
- init()
- calibrate()
- while true do
- term.clear()
- print("Current Position XY: " .. xPos .. " " .. yPos)
- farm()
- goToPosition(0, 0)
- os.sleep(1)
- resetOutputs()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement