Advertisement
SythsGod

Turbine Control

Aug 29th, 2015
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local t = {}
  2. local energy = {}
  3. local engaged = {}
  4. local online = {}
  5. local rpm = {}
  6. local restart = 0
  7. local avgrft = "..calculating.. "
  8. local avgrfth = 0
  9. local avgrftc = 0
  10.  
  11. function getStatus()
  12.   for i = 0, #t - 1 do
  13.     engaged[i] = t[i].getInductorEngaged()
  14.     online[i]  = t[i].getActive()
  15.     energy[i]  = t[i].getEnergyStored()
  16.     rpm[i]     = t[i].getRotorSpeed()
  17.   end
  18. end
  19.  
  20. function getConnectedTurbines()
  21.   local allDone = false
  22.   local turbine = nil
  23.   local i = 0
  24.  
  25.   repeat
  26.     turbine = peripheral.wrap("BigReactors-Turbine_" .. i)
  27.     if turbine ~= nil then
  28.       t[i] = turbine
  29.       i = i + 1
  30.     end
  31.  
  32.     allDone = turbine == nil
  33.   until allDone
  34.  
  35.   return i
  36. end
  37.  
  38. no_turbines_error = getConnectedTurbines() == 0
  39. if no_turbines_error then
  40.   printError("No turbines found!")
  41. end
  42.  
  43. while true do
  44.   term.clear()
  45.   term.setCursorPos(1,1)
  46.  
  47.   local rft = 0  
  48.  
  49.   getStatus()
  50.  
  51.   for i = 0, #t - 1 do
  52.     t[i].setInductorEngaged(not(rpm[i] < 1780 or not (rpm[i] > 1820))) -- turn on coils when needed
  53.     rft = rft + t[i].getEnergyProducedLastTick()
  54.   end
  55.  
  56.   avgrfth = avgrfth + rft
  57.   if avgrftc == 5 then
  58.     avgrft = avgrfth / 5
  59.     avgrftc = 0
  60.     avgrfth = 0
  61.   end
  62.   avgrftc = avgrftc + 1
  63.  
  64.   print("Producing " .. rft .. "rf/t")
  65.   print("Average: " .. avgrft .. "rf/t")
  66.  
  67.   restart = restart + 1
  68.   if restart == 50 then
  69.     --os.reboot()
  70.   else
  71.     os.sleep(1)
  72.   end
  73. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement