Advertisement
Guest User

reactor control

a guest
Oct 21st, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.42 KB | None | 0 0
  1. p = peripheral.wrap("back")
  2. hasMonitor = peripheral.isPresent("top")
  3. m = nil
  4. if hasMonitor then
  5.     m = peripheral.wrap("top")
  6.     m.setTextScale(1.5)
  7. end
  8.  
  9. level = 100
  10. eMax = 10000000
  11. eTarget = eMax*.66
  12. delay = 30
  13. ticks = delay * 20
  14. p.setActive(true)
  15.  
  16. while true do
  17.     p.setAllControlRodLevels(100-level)
  18.     s1 = p.getEnergyStored()
  19.     sleep(delay)
  20.     s2 = p.getEnergyStored()
  21.     prod = p.getEnergyProducedLastTick()
  22.     net = (s2-s1)/ticks-prod
  23.     eBattPwr = eTarget-p.getEnergyStored()
  24.     eOutPwr = 0-net*ticks
  25.     if (eOutPwr < 0) then
  26.         eOutPwr = 0
  27.     end
  28.     eRequested = eBattPwr + eOutPwr
  29.     if (eRequested < 0) then
  30.         eRequested = 0
  31.     end
  32.     eReqPerTick = eRequested/ticks
  33.     if (level > 25) then
  34.         eCtrlRatio = prod/level
  35.     end
  36.     level = math.floor(eReqPerTick/eCtrlRatio)
  37.     if (level > 100) then
  38.         level = 100
  39.     end
  40.     bLevel = math.floor(s2*100/eMax)
  41.     gLevel = math.ceil(-net/eCtrlRatio)
  42.     if (gLevel < 0) then
  43.         gLevel = 0
  44.     end
  45.     print("Battery: " .. bLevel .. "%")
  46.     print("Load: " .. gLevel .. "%")
  47.     print("Generation: " .. level .. "%")
  48.     print()
  49.     if hasMonitor then
  50.         m.clear()
  51.         m.setCursorPos(1,1)
  52.         m.write("B " .. bLevel .. "%")
  53.         m.setCursorPos(1,2)
  54.         m.write("L " .. gLevel .. "%")
  55.         m.setCursorPos(1,3)
  56.         m.write("G " .. level .. "%")        
  57.     end
  58. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement