Advertisement
UnitedMi

Trubine Control v1.6

Dec 12th, 2019
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. write("Init Turbine ... ")
  2. local turbine
  3. turbine = peripheral.find("BigReactors-Turbine")
  4. print("Done")
  5.  
  6. write("Init Monitor ... ")
  7. local mon
  8. mon = peripheral.wrap("back")
  9. print("Done")
  10.  
  11. write("Init Modem ... ")
  12. rednet.open("bottom")
  13. print("Done")
  14.  
  15. write("Init Values ... ")
  16. TankTimeout = 1
  17.  
  18. NumTanks = 7
  19. Tanks = {"tk01", "tk02", "tk03", "tk04", "tkA1", "tkA2", "tkA3"}
  20. Fluid = {"oil", "oil", "oil", "oil", "stm", "gas", "dsl"}
  21. MxAmt = {6400, 6400, 6400, 6400, 6400, 6400, 6400}
  22. CrStp = {0, 0, 0, 0, 0, 0, 0}
  23. MxStp = {4, 4, 4, 4, 4, 4, 4}
  24.  
  25. MxOil = 0
  26. CrOil = 0
  27. MxStm = 0
  28. CrStm = 0
  29. MxGas = 0
  30. CrGas = 0
  31. MxDsl = 0
  32. CrDsl = 0
  33. print("Done")
  34.  
  35. function UpdateTurbine()
  36. print("Printing Rotor Speed")
  37. mon.setCursorPos(1,1)
  38. mon.write("Rotor Speed")
  39. speed = turbine.getRotorSpeed()
  40. speed = math.floor(speed)
  41. mon.setCursorPos(1,2)
  42. mon.write(tostring(speed).." RPM")
  43.  
  44. print("Printing Fluid Flow Rate")
  45. mon.setCursorPos(1,4)
  46. mon.write("Steam Flow")
  47. flow = turbine.getFluidFlowRate()
  48. mon.setCursorPos(1,5)
  49. mon.write(tostring(flow).." mb/t")
  50.  
  51. print("Printing Power Output")
  52. mon.setCursorPos(1,7)
  53. mon.write("Power Output")
  54. powerOut = turbine.getEnergyProducedLastTick()
  55. mon.setCursorPos(1,8)
  56. mon.write(tostring(math.floor(powerOut)).." RF/t")
  57. end
  58.  
  59. function UpdateFluids()
  60. print("Printing Oil Stat")
  61. mon.setCursorPos(17,1)
  62. mon.write("Oil")
  63. mon.setCursorPos(17,2)
  64. mon.write(tostring(math.floor(CrOil / MxOil * 100)).."%")
  65. mon.setCursorPos(22,2)
  66. mon.write("~"..math.floor(CrOil).." B")
  67.  
  68. print("Printing Gasoline Stat")
  69. mon.setCursorPos(17,4)
  70. mon.write("Gasoline")
  71. mon.setCursorPos(17,5)
  72. mon.write(tostring(math.floor(CrGas / MxGas * 100)).."%")
  73. mon.setCursorPos(22,5)
  74. mon.write("~"..math.floor(CrGas).." B")
  75.  
  76. print("Printing Diesel Stat")
  77. mon.setCursorPos(17,7)
  78. mon.write("Diesel")
  79. mon.setCursorPos(17,8)
  80. mon.write(tostring(math.floor(CrDsl / MxDsl * 100)).."%")
  81. mon.setCursorPos(22,8)
  82. mon.write("~"..math.floor(CrDsl).." B")
  83.  
  84. print("Printing Stem Stat")
  85. mon.setCursorPos(17,10)
  86. mon.write("Steam")
  87. mon.setCursorPos(17,11)
  88. mon.write(tostring(math.floor(CrStm / MxStm * 100)).."%")
  89. mon.setCursorPos(22,11)
  90. mon.write("~"..math.floor(CrStm).." B")
  91. end
  92.  
  93. function UpdateEst()
  94. EstGas = 39 / 75 * CrOil
  95. EstDsl = 27 / 75 * CrOil
  96.  
  97. TimeGas = EstGas * CrGas * 46 / 60 / 60 / 24
  98. TimeDsl = EstDsl * CrDsl * 33 / 60 / 60 / 24
  99.  
  100. mon.setCursorPos(33,1)
  101. mon.write("Est Fuel Time")
  102. mon.setCursorPos(33,2)
  103. mon.write("~"..tostring(math.floor(TimeGas + TimeDsl)).." Days")
  104.  
  105. mon.setCursorPos(33,4)
  106. mon.write("Potential Gasoline")
  107. mon.setCursorPos(33,5)
  108. mon.write("~"..math.floor(EstGas)" B")
  109.  
  110. mon.setCursorPos(33,7)
  111. mon.write("Potential Diesel")
  112. mon.setCursorPos(33,8)
  113. mon.write("~"..math.floor(EstDsl)" B")
  114. end
  115.  
  116. write("Init Tank Max Vals ... ")
  117. for i = 1, NumTanks do
  118. if (Fluid[i] == "oil") then
  119. MxOil = MxOil + MxAmt[i]
  120. elseif (Fluid[i] == "stm") then
  121. MxStm = MxStm + MxAmt[i]
  122. elseif (Fluid[i] == "gas") then
  123. MxGas = MxGas + MxAmt[i]
  124. elseif (Fluid[i] == "dsl") then
  125. MxDsl = MxDsl + MxAmt[i]
  126. end
  127. end
  128. print("Done")
  129.  
  130. print("Begining Loop")
  131. while (true) do
  132. print("Clearing Values")
  133. CrOil = 0
  134. CrStm = 0
  135. CrGas = 0
  136. CrDsl = 0
  137.  
  138. for i = 1, NumTanks do
  139. print("Checking Tank "..Tanks[i])
  140. rednet.broadcast(Tanks[i], "tanks")
  141. print("Awaiting Response")
  142. senderID, msg, protocol = rednet.receive("tanks", TankTimeout)
  143. CrStp[i] = tonumber(msg) or 0
  144. print("Received: "..CrStp[i])
  145. if (Fluid[i] == "oil") then
  146. CrOil = CrOil + (CrStp[i] / MxStp[i] * MxAmt[i])
  147. elseif (Fluid[i] == "stm") then
  148. CrStm = CrStm + (CrStp[i] / MxStp[i] * MxAmt[i])
  149. elseif (Fluid[i] == "gas") then
  150. CrGas = CrGas + (CrStp[i] / MxStp[i] * MxAmt[i])
  151. elseif (Fluid[i] == "dsl") then
  152. CrDsl = CrDsl + (CrStp[i] / MxStp[i] * MxAmt[i])
  153. end
  154. end
  155.  
  156. mon.clear()
  157. UpdateTurbine()
  158. UpdateFluids()
  159. UpdateEst()
  160. sleep(TankTimeout)
  161. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement