Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- p = peripheral.wrap("back")
- hasMonitor = peripheral.isPresent("top")
- m = nil
- if hasMonitor then
- m = peripheral.wrap("top")
- m.setTextScale(1.5)
- end
- level = 100
- eMax = 10000000
- eTarget = eMax*.66
- delay = 30
- ticks = delay * 20
- p.setActive(true)
- while true do
- p.setAllControlRodLevels(100-level)
- s1 = p.getEnergyStored()
- sleep(delay)
- s2 = p.getEnergyStored()
- prod = p.getEnergyProducedLastTick()
- net = (s2-s1)/ticks-prod
- eBattPwr = eTarget-p.getEnergyStored()
- eOutPwr = 0-net*ticks
- if (eOutPwr < 0) then
- eOutPwr = 0
- end
- eRequested = eBattPwr + eOutPwr
- if (eRequested < 0) then
- eRequested = 0
- end
- eReqPerTick = eRequested/ticks
- if (level > 25) then
- eCtrlRatio = prod/level
- end
- level = math.floor(eReqPerTick/eCtrlRatio)
- if (level > 100) then
- level = 100
- end
- bLevel = math.floor(s2*100/eMax)
- gLevel = math.ceil(-net/eCtrlRatio)
- if (gLevel < 0) then
- gLevel = 0
- end
- print("Battery: " .. bLevel .. "%")
- print("Load: " .. gLevel .. "%")
- print("Generation: " .. level .. "%")
- print()
- if hasMonitor then
- m.clear()
- m.setCursorPos(1,1)
- m.write("B " .. bLevel .. "%")
- m.setCursorPos(1,2)
- m.write("L " .. gLevel .. "%")
- m.setCursorPos(1,3)
- m.write("G " .. level .. "%")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement