85 lines
1.9 KiB
Lua
85 lines
1.9 KiB
Lua
--regulate in between these in normal operation
|
|
NORMAL_THRESHOLD_U = 8000000
|
|
NORMAL_THRESHOLD_L = 7000000
|
|
--control rod pos for normal operation
|
|
NORMAL_ROD_POS = 81
|
|
|
|
--proportionally increase production when energy
|
|
--storage drops below this level
|
|
--(by removing control rods)
|
|
HIGH_THRESHOLD = 6000000
|
|
|
|
|
|
local active = false
|
|
local ctrl_rods = NORMAL_ROD_POS
|
|
|
|
local reactor = peripheral.wrap("back")
|
|
local mon = peripheral.wrap("right")
|
|
|
|
print("Monitoring reactor...")
|
|
|
|
while (true)
|
|
do
|
|
--setup monitor
|
|
mon.clear()
|
|
|
|
--get reactor energy
|
|
local energy = reactor.getEnergyStored()
|
|
--display
|
|
mon.setCursorPos(1, 1) --why is there no print() ???
|
|
mon.write(energy)
|
|
mon.write("RF")
|
|
|
|
|
|
if (energy > NORMAL_THRESHOLD_U)
|
|
then
|
|
active = false
|
|
else
|
|
if (energy < NORMAL_THRESHOLD_L)
|
|
then
|
|
active = true
|
|
if (energy < HIGH_THRESHOLD)
|
|
then
|
|
--proportional control
|
|
ctrl_rods = NORMAL_ROD_POS * (energy / HIGH_THRESHOLD)
|
|
end
|
|
end
|
|
end
|
|
|
|
--actually set state
|
|
mon.setCursorPos(1, 2)
|
|
if (active)
|
|
then
|
|
reactor.setActive(true)
|
|
mon.write("On")
|
|
else
|
|
reactor.setActive(false)
|
|
mon.write("Off")
|
|
end
|
|
|
|
mon.setCursorPos(1, 4)
|
|
reactor.setAllControlRodLevels(ctrl_rods)
|
|
mon.write(ctrl_rods)
|
|
mon.write("%")
|
|
|
|
|
|
--display power produced
|
|
mon.setCursorPos(1, 3)
|
|
mon.write(math.floor(reactor.getEnergyProducedLastTick()))
|
|
mon.write("RF/t")
|
|
|
|
|
|
--also check if fuel has run out
|
|
--(if the fuel inside the reactor isn't
|
|
--getting refilled anymore)
|
|
|
|
local deltaFuel = reactor.getFuelAmountMax() - reactor.getFuelAmount()
|
|
if (deltaFuel > 1000) --more than 1 bucket
|
|
then
|
|
mon.setCursorPos(1, 5)
|
|
mon.write("REFUEL!")
|
|
end
|
|
|
|
sleep(1)
|
|
end
|