Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- reactor = peripheral.find("fissionReactorLogicAdapter")
- turbine = peripheral.find("turbineValve")
- if not reactor or not turbine then
- print("Error: Reactor or Turbine not found!")
- return
- end
- local stored = turbine.getEnergy()
- local capacity = turbine.getMaxEnergy()
- print("Stored Energy: " .. stored)
- print("Max Capacity: " .. capacity)
- print("Enter desired power level (or 'off' to stop):")
- local powerInput = read()
- local power = tonumber(powerInput)
- if powerInput == "off" then
- power = 0
- elseif not power then
- print("Invalid input. Defaulting to 90% of capacity.")
- power = capacity * 0.9
- end
- local run = true
- local threshold = 0.01 -- Adjustable tolerance
- local burnRate = reactor.getActualBurnRate()
- local base = burnRate or 0
- function clamp(value, min, max)
- if value < min then
- return min
- elseif value > max then
- return max
- else
- return value
- end
- end
- print("Starting control loop. Press 'q' to stop.")
- while run do
- -- Send a manual event to prevent blocking
- os.queueEvent("custom_event")
- local event, key = os.pullEvent()
- -- Key handling to stop the loop
- if event == "key" and key == keys.q then
- print("Exiting control loop.")
- run = false
- break
- end
- -- Get current energy levels
- local stored = turbine.getEnergy()
- local setpoint = (turbine.getMaxEnergy()/100)*power
- local maxBurnRate = reactor.getMaxBurnRate()
- -- Calculate the difference between stored energy and the setpoint
- local diffrence = stored - setpoint
- -- Adjust burn rate based on the difference
- if diffrence > 0 then
- -- Stored energy is above setpoint; decrease burn rate
- burnRate = burnRate - (diffrence / capacity) * 5
- elseif diffrence < 0 then
- -- Stored energy is below setpoint; increase burn rate
- burnRate = burnRate + (math.abs(diffrence) / capacity) * 5
- end
- -- Clamp burn rate within allowable limits
- burnRate = clamp(burnRate, 0, maxBurnRate)
- -- Set the reactor burn rate
- reactor.setBurnRate(burnRate)
- -- Debugging output
- print("Stored Energy: " .. stored)
- print("Setpoint: " .. setpoint)
- print("Burn Rate: " .. burnRate)
- -- Small delay to control loop frequency
- sleep(0.5)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement