Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. reactor = peripheral.wrap("BigReactors-Reactor_6")
  2. monitor = peripheral.wrap("monitor_47")
  3.  
  4. -- Control Vars
  5. setpoint = 21000
  6. tolerance = 500
  7. rod_level = 82
  8. step = 0.5     -- loop time
  9. i = 0          -- control iterator
  10. rate = 4       -- how many steps between control rod updates
  11.  
  12. -- Reactor init
  13. reactor.setActive(true)
  14.  
  15. while true do
  16.  
  17.   -- Reactor vars
  18.   active = reactor.getActive()
  19.   raw_power = reactor.getEnergyProducedLastTick()
  20.   power = math.floor(raw_power/10)/100
  21.   fuel = math.floor(reactor.getFuelAmount()/reactor.getFuelAmountMax()*10000)/100
  22.  
  23.   -- Reactor control loop
  24.   if i >= rate - 1 then
  25.     reactor.setAllControlRodLevels(rod_level)
  26.     if raw_power < setpoint - tolerance then
  27.       rod_level = rod_level - 1
  28.     elseif raw_power > setpoint + tolerance then
  29.       rod_level = rod_level + 1
  30.     end
  31.   else
  32.     i = i + 1
  33.   end
  34.  
  35.   if rod_level < 0 then rod_level = 0 end
  36.   if rod_level > 100 then rod_level = 100 end
  37.  
  38.   -- Monitor init
  39.   monitor.clear()
  40.   monitor.setTextScale(1)
  41.   monitor.setTextColor(colors.white)
  42.  
  43.   -- Reactor status
  44.   if active then
  45.     monitor.setCursorPos(24,1)
  46.     monitor.write("Reactor: ")
  47.     monitor.setTextColor(colors.green)
  48.     monitor.write("Active")
  49.   else
  50.     monitor.setCursorPos(23,1)
  51.     monitor.write("Reactor: ")
  52.     monitor.setTextColor(colors.red)
  53.     monitor.write("Inactive")
  54.   end
  55.   monitor.setTextColor(colors.white)
  56.  
  57.   -- Reactor power output
  58.   monitor.setCursorPos(2,2)
  59.   monitor.write("Power Output: " .. tostring(power) .. "K RF/t")
  60.  
  61.   -- Reactor fuel Level
  62.   monitor.setCursorPos(2,3)
  63.   monitor.write("Fuel: ")
  64.   if fuel < 20 then
  65.     monitor.setTextColor(colors.red)
  66.   elseif fuel < 40 then
  67.     monitor.setTextColor(colors.orange)
  68.   elseif fuel < 70 then
  69.     monitor.setTextColor(colors.yellow)
  70.   else
  71.     monitor.setTextColor(colors.green)
  72.   end
  73.   monitor.write(tostring(fuel) .. "%")
  74.   monitor.setTextColor(colors.white)
  75.  
  76.   -- Control Rod Level Display
  77.   if rod_level < 10 then
  78.     monitor.setCursorPos(59,2)
  79.   else
  80.     monitor.setCursorPos(58,2)
  81.   end
  82.   monitor.write(tostring(rod_level) .. "%")
  83.  
  84.   for j = 1,16 do
  85.     monitor.setCursorPos(58,2+j)
  86.     monitor.setBackgroundColor(colors.yellow)    
  87.     monitor.write(" ")    
  88.     if j < 16/100*rod_level then
  89.       monitor.setBackgroundColor(colors.gray)
  90.       monitor.write(" ")
  91.       monitor.setBackgroundColor(colors.yellow)
  92.       monitor.write(" ")
  93.     else
  94.       monitor.write("  ")
  95.     end
  96.   end
  97.  
  98.   os.sleep(step)
  99. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement