Someoneawesome78

reactorControllerV2

Jan 3rd, 2021 (edited)
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1. --reactor props
  2. local reactor = peripheral.wrap("back");
  3. local monitor = peripheral.wrap("top");
  4. local turnedOn = reactor.getActive();
  5. --rf rate check
  6. local PrevEnergyLevel = reactor.getEnergyStored();
  7. local prevCheckTime = os.clock();
  8. local prevRfRate = nil;
  9. --reactor cycle time
  10. local prevShutdownTime = nil;
  11. local prevCycleTime = nil;
  12.  
  13. print("Starting reactor monitoring")
  14.  
  15. while true do
  16. print("Checking status")
  17.  
  18. local currentEnergy = reactor.getEnergyStored()
  19. local curTime = os.clock()
  20.  
  21. --Check energy status
  22. if turnedOn == false and currentEnergy <= 1000000 then
  23. reactor.setActive(true);
  24. turnedOn = true;
  25. print("Turned on Reactor")
  26. elseif turnedOn == true and currentEnergy >= 7000000 then
  27. reactor.setActive(false);
  28. turnedOn = false;
  29. print("Turned off Reactor")
  30.  
  31. --get cycle length
  32. if prevShutdownTime ~= nil then
  33. prevCycleTime = curTime - prevShutdownTime
  34. end
  35. prevShutdownTime = os.clock()
  36. end
  37.  
  38. --check fuel status
  39. if redstone.getAnalogInput("right") <= 2 then
  40. redstone.setOutput("left", true);
  41. print("Alert: low fuel!")
  42. else
  43. redstone.setOutput("left", false);
  44. end
  45.  
  46. --Get status
  47. --Get rate of RF usage
  48. prevRfRate = nil
  49. if (curTime ~= prevCheckTime) then
  50. prevRfRate = (currentEnergy - PrevEnergyLevel)/(curTime - prevCheckTime) --change in rf in rf/second
  51. prevRfRate = prevRfRate/20 --change in rf in rf/tick
  52.  
  53. --set new variables
  54. prevCheckTime = curTime
  55. PrevEnergyLevel = currentEnergy
  56. end
  57.  
  58. --display status on monitor
  59. --Status: On/Off
  60. --Rate of RF: {rate}
  61. --Current cycle Length: {length}
  62. --Previous Cycle Length: {length}
  63.  
  64. --reset monitor
  65. monitor.clear()
  66. monitor.setCursorPos(1,2)
  67. monitor.setTextScale(0.5)
  68. monitor.setTextColor(colors.white)
  69.  
  70. --Show status text
  71. monitor.write("Status: ")
  72. if turnedOn then
  73. monitor.setTextColor(colors.lime)
  74. monitor.write("On")
  75. else
  76. monitor.setTextColor(colors.red)
  77. monitor.write("Off")
  78. end
  79.  
  80. --show rf text
  81. monitor.setCursorPos(1,3)
  82. monitor.setTextColor(colors.white)
  83. monitor.write("Rate of RF: ")
  84.  
  85. if prevRfRate ~= nil then
  86. if prevRfRate <= 0 then
  87. monitor.setTextColor(colors.red)
  88. monitor.write("-" .. tostring(prevRfRate))
  89. else
  90. monitor.setTextColor(colors.lime)
  91. monitor.write("-" .. tostring(prevRfRate))
  92. end
  93. else
  94. monitor.setTextColor(colors.magenta)
  95. monitor.write("Data not avaliable yet")
  96. end
  97.  
  98. --show cur cycle text
  99. monitor.setCursorPos(1,4)
  100. monitor.setTextColor(colors.white)
  101. monitor.write("Current Cycle Length: ")
  102.  
  103. if prevShutdownTime ~= nil then
  104. monitor.write(tostring(curTime - prevShutdownTime) .. " seconds")
  105. else
  106. monitor.setTextColor(colors.magenta)
  107. monitor.write("Data not avaliable yet")
  108. end
  109.  
  110. --show cycle text
  111. monitor.setCursorPos(1,5)
  112. monitor.setTextColor(colors.white)
  113. monitor.write("Prev Cycle Length: ")
  114.  
  115. if prevCycleTime ~= nil then
  116. monitor.write(tostring(prevCycleTime) .. " seconds")
  117. else
  118. monitor.setTextColor(colors.magenta)
  119. monitor.write("Data not avaliable yet")
  120. end
  121.  
  122. --Does sleep
  123. if turnedOn == true then
  124. sleep(3);
  125. else
  126. sleep(60);
  127. end
  128.  
  129. end
Add Comment
Please, Sign In to add comment