Advertisement
flimmy2911

Turbine-Wireless-Test

Mar 3rd, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.38 KB | None | 0 0
  1. local turbine = peripheral.wrap("back")
  2. local modem = peripheral.wrap("top")
  3.  
  4. local desiredSpeed = 1800
  5. local perfectFlowThrough = 1742
  6.  
  7. local myChannel = 10
  8.  
  9. function reTimeTurbine()
  10.     print("retiming Turbine")
  11.    
  12.     while not (turbine.getRotorSpeed() == desiredSpeed and turbine.getFluidFlowRateMax() == perfectFlowThrough) do
  13.         local rotorSpeed = turbine.getRotorSpeed()
  14.        
  15.         if rotorSpeed == desiredSpeed then
  16.             turbine.setFluidFlowRateMax(perfectFlowThrough)
  17.             turbine.setInductorEngaged(true)
  18.         elseif rotorSpeed < desiredSpeed then
  19.             if rotorSpeed < (desiredSpeed - 200) then
  20.                 turbine.setFluidFlowRateMax(2000)
  21.                 turbine.setInductorEngaged(false)
  22.             else
  23.                 turbine.setFluidFlowRateMax(perfectFlowThrough + 50)
  24.                 turbine.setInductorEngaged(true)
  25.             end
  26.         elseif rotorSpeed > desiredSpeed then
  27.             if rotorSpeed > (desiredSpeed + 200) then
  28.                 turbine.setFluidFlowRateMax(0)
  29.                 turbine.setInductorEngaged(true)
  30.             else
  31.                 turbine.setFluidFlowRateMax(perfectFlowThrough - 50)
  32.                 turbine.setInductorEngaged(true)
  33.             end
  34.         end
  35.     end
  36.     sleep(0.5)
  37. end
  38.  
  39. function sendMessage(destination, message)
  40.     modem.transmit(destination, myChannel, message)
  41. end
  42.  
  43. function mainLoop()
  44.     while true do
  45.         local event, modemSide, senderChannel, replyChannel, message, senderDistance = os.pullEvent("modem_message")
  46.        
  47.         if message == "reTime" then reTimeTurbine()
  48.         elseif message == "monAll" then monAll(replyChannel)
  49.         elseif message == "disengage" then turbine.setInductorEngaged(false)
  50.         elseif message == "engage" then turbine.setInductorEngaged(true)
  51.         elseif message == "stop" then turbine.setActive(false)
  52.         elseif message == "start" then turbine.setActive(true)
  53.         elseif message == "active" then sendMessage(replyChannel, turbine.getActive())
  54.         elseif message == "stored" then sendMessage(replyChannel, turbine.getEnergyStored())
  55.         elseif message == "speed" then sendMessage(replyChannel, turbine.getRotorSpeed())
  56.         elseif message == "maxflow" then sendMessage(replyChannel, turbine.getFluidFlowMax())
  57.         elseif message == "realflow" then sendMessage(replyChannel, turbine.getFluidFlowRate())
  58.         elseif message == "energyProduced" then sendMessage(replyChannel, turbine.getEnergyProducedLastTick())
  59.         elseif message == "inductor" then sendMessage(replyChannel, turbine.getInductorEngaged())
  60.         end
  61.     end
  62. end
  63.  
  64. function init()
  65.     modem.open(myChannel)
  66.     mainLoop()
  67. end
  68.  
  69. init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement