druidbruce

CC tweaked create miner output control

Nov 15th, 2021 (edited)
725
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.64 KB | None | 0 0
  1. local sn = 0    --state number          back
  2. local sh = false --horizontal shaft     top
  3. local gh = false --horizontal gearshift bottom
  4. local sv = false --vertical shaft       left
  5. local gv = false --vertical gearshift   right
  6. local sg = false --drill bearing        front
  7. local function drillpulse()
  8.     os.sleep(0.1)
  9.     redstone.setOutput("front", true)
  10.     os.sleep(0.1)
  11.     redstone.setOutput("front", false)
  12.     os.sleep(0.5)
  13. end
  14.  
  15. while true do
  16.    
  17.     os.sleep(0.1) --every 2 ticks
  18.     sn = redstone.getAnalogInput("back")
  19.     if sn == 3 then
  20.         if sh and not sv and gv then            --state 3
  21.             sh = true
  22.             sv = false
  23.             gv = true
  24.             redstone.setOutput("top", sh)
  25.             redstone.setOutput("left", sv)
  26.             redstone.setOutput("right", gv)
  27.             print("state 3")
  28.         elseif sh and not sv and not gv then        --state 9
  29.             sh = true
  30.             sv = false
  31.             gv = false     
  32.             redstone.setOutput("top", sh)
  33.             redstone.setOutput("left", sv)
  34.             redstone.setOutput("right", gv)    
  35.             print("state 9")
  36.            
  37.         elseif not sh and not sv and not gv then    -- state 12
  38.             sh = true
  39.             sv = false
  40.             gv = true
  41.             redstone.setOutput("top", sh)
  42.             redstone.setOutput("left", sv)
  43.             redstone.setOutput("right", gv)
  44.             os.sleep(2)
  45.             sh = true
  46.             sv = false
  47.             gv = false
  48.             redstone.setOutput("top", sh)
  49.             redstone.setOutput("left", sv)
  50.             redstone.setOutput("right", gv)
  51.             os.sleep(4)
  52.             print("state 12")
  53.        
  54.        
  55.         end
  56.     elseif sn == 6 then                     --state 6          
  57.         sh = false
  58.         redstone.setOutput("top", sh)
  59.         os.sleep(1)                 --only being executed if its already at the horizontal end
  60.         sh = true
  61.         sv = true
  62.         gv = false
  63.         redstone.setOutput("top", sh)
  64.         redstone.setOutput("left", sv)
  65.         redstone.setOutput("right", gv)
  66.         drillpulse()
  67.         os.sleep(1)
  68.         print("state 6")
  69.     elseif sn == 7 then                     --state 7
  70.         sh = true
  71.         sv = true
  72.         gv = false
  73.         redstone.setOutput("top", sh)
  74.         redstone.setOutput("left", sv)
  75.         redstone.setOutput("right", gv)
  76.         drillpulse()
  77.         os.sleep(1)    
  78.         print("state"..sn)
  79.     elseif sn == 11 then                    --state 11  
  80.         sh = true
  81.         sv = true
  82.         gv = true
  83.         redstone.setOutput("top", sh)
  84.         redstone.setOutput("left", sv)
  85.         redstone.setOutput("right", gv)
  86.         drillpulse()
  87.         os.sleep(1)
  88.         print("state"..sn)
  89.     elseif sn == 5 then                     --state 5
  90.         sh = true
  91.         sv = true
  92.         gv = false
  93.         redstone.setOutput("top", sh)
  94.         redstone.setOutput("left", sv)
  95.         redstone.setOutput("right", gv)
  96.         drillpulse()
  97.         os.sleep(1)    
  98.         print("state"..sn)
  99.     elseif sn == 4 then                     --state 4
  100.         sh = true
  101.         sv = false
  102.         gv = false
  103.         redstone.setOutput("top", sh)
  104.         redstone.setOutput("left", sv)
  105.         redstone.setOutput("right", gv)
  106.         os.sleep(2)
  107.         sh = true
  108.         sv = false
  109.         gv = true
  110.         redstone.setOutput("top", sh)
  111.         redstone.setOutput("left", sv)
  112.         redstone.setOutput("right", gv)
  113.         os.sleep(4)
  114.         print("state"..sn)
  115.     elseif sn == 8 then                     --state 8
  116.         sh = true
  117.         sv = false
  118.         gv = false
  119.         redstone.setOutput("top", sh)
  120.         redstone.setOutput("left", sv)
  121.         redstone.setOutput("right", gv)
  122.         os.sleep(0.3)
  123.         print("state"..sn)
  124.     elseif sn == 2 then                     --state 2
  125.         sh = true
  126.         sv = false
  127.         gv = true
  128.         redstone.setOutput("top", sh)
  129.         redstone.setOutput("left", sv)
  130.         redstone.setOutput("right", gv)
  131.         print("state"..sn)
  132.     elseif sn == 1 then                     --state 1
  133.         sh = false
  134.         redstone.setOutput("top", sh)
  135.         os.sleep(0.3)                   --only being executed if its already at the end
  136.         sh = true
  137.         sv = false
  138.         gv = true
  139.         redstone.setOutput("top", sh)
  140.         redstone.setOutput("left", sv)
  141.         redstone.setOutput("right", gv)
  142.         print("state"..sn)
  143.     elseif sn == 10 then                    --state 10
  144.         sh = true
  145.         sv = true
  146.         gv = true
  147.         redstone.setOutput("top", sh)
  148.         redstone.setOutput("left", sv)
  149.         redstone.setOutput("right", gv)
  150.         drillpulse()
  151.         os.sleep(1)
  152.         print("state"..sn)
  153.     elseif sn == 0 then                     --manual control for all inputs
  154.         sh = false
  155.         gh = false
  156.         sv = false
  157.         gv = false
  158.         sg = false
  159.         redstone.setOutput("top", sh)
  160.         redstone.setOutput("bottom", gh)
  161.         redstone.setOutput("left", sv)
  162.         redstone.setOutput("right", gv)    
  163.         redstone.setOutput("front", sg)
  164.         print("state"..sn)
  165.     elseif sn == 13 then
  166.             sh = true
  167.             sv = false
  168.             gv = true
  169.             redstone.setOutput("top", sh)
  170.             redstone.setOutput("left", sv)
  171.             redstone.setOutput("right", gv)
  172.             os.sleep(2)
  173.             sh = true
  174.             sv = false
  175.             gv = false
  176.             redstone.setOutput("top", sh)
  177.             redstone.setOutput("left", sv)
  178.             redstone.setOutput("right", gv)
  179.             os.sleep(4)
  180.         print("state"..sn)
  181.     elseif sn == 15 then                    --inventory full, drill go up and stop
  182.         sh = true
  183.         sv = false
  184.         gv = false
  185.         redstone.setOutput("top", sh)
  186.         redstone.setOutput("left", sv)
  187.         redstone.setOutput("right", gv)    
  188.         print("state"..sn)
  189.  
  190.    
  191.    
  192.     end
  193. end
Add Comment
Please, Sign In to add comment