Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local sn = 0 --state number back
- local sh = false --horizontal shaft top
- local gh = false --horizontal gearshift bottom
- local sv = false --vertical shaft left
- local gv = false --vertical gearshift right
- local sg = false --drill bearing front
- local function drillpulse()
- os.sleep(0.1)
- redstone.setOutput("front", true)
- os.sleep(0.1)
- redstone.setOutput("front", false)
- os.sleep(0.5)
- end
- while true do
- os.sleep(0.1) --every 2 ticks
- sn = redstone.getAnalogInput("back")
- if sn == 3 then
- if sh and not sv and gv then --state 3
- sh = true
- sv = false
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- print("state 3")
- elseif sh and not sv and not gv then --state 9
- sh = true
- sv = false
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- print("state 9")
- elseif not sh and not sv and not gv then -- state 12
- sh = true
- sv = false
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(2)
- sh = true
- sv = false
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(4)
- print("state 12")
- end
- elseif sn == 6 then --state 6
- sh = false
- redstone.setOutput("top", sh)
- os.sleep(1) --only being executed if its already at the horizontal end
- sh = true
- sv = true
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- drillpulse()
- os.sleep(1)
- print("state 6")
- elseif sn == 7 then --state 7
- sh = true
- sv = true
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- drillpulse()
- os.sleep(1)
- print("state"..sn)
- elseif sn == 11 then --state 11
- sh = true
- sv = true
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- drillpulse()
- os.sleep(1)
- print("state"..sn)
- elseif sn == 5 then --state 5
- sh = true
- sv = true
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- drillpulse()
- os.sleep(1)
- print("state"..sn)
- elseif sn == 4 then --state 4
- sh = true
- sv = false
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(2)
- sh = true
- sv = false
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(4)
- print("state"..sn)
- elseif sn == 8 then --state 8
- sh = true
- sv = false
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(0.3)
- print("state"..sn)
- elseif sn == 2 then --state 2
- sh = true
- sv = false
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- print("state"..sn)
- elseif sn == 1 then --state 1
- sh = false
- redstone.setOutput("top", sh)
- os.sleep(0.3) --only being executed if its already at the end
- sh = true
- sv = false
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- print("state"..sn)
- elseif sn == 10 then --state 10
- sh = true
- sv = true
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- drillpulse()
- os.sleep(1)
- print("state"..sn)
- elseif sn == 0 then --manual control for all inputs
- sh = false
- gh = false
- sv = false
- gv = false
- sg = false
- redstone.setOutput("top", sh)
- redstone.setOutput("bottom", gh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- redstone.setOutput("front", sg)
- print("state"..sn)
- elseif sn == 13 then
- sh = true
- sv = false
- gv = true
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(2)
- sh = true
- sv = false
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- os.sleep(4)
- print("state"..sn)
- elseif sn == 15 then --inventory full, drill go up and stop
- sh = true
- sv = false
- gv = false
- redstone.setOutput("top", sh)
- redstone.setOutput("left", sv)
- redstone.setOutput("right", gv)
- print("state"..sn)
- end
- end
Add Comment
Please, Sign In to add comment