Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Creddit ian for bulk of code
- error_prior = 0
- local integral_prior = 0
- local kp = 2
- local ki = 0.01
- local kd = 4
- local bias = 0
- SIDE = "back"
- while true do
- sleep(0)
- setRps = 900
- getRps = peripheral.wrap(SIDE).rotor().RPM()
- if peripheral.wrap(SIDE).battery().stored() < 100000 and setRps - getRps < 200 then
- peripheral.wrap(SIDE).setCoilEngaged(true)
- else
- peripheral.wrap(SIDE).setCoilEngaged(false)
- end
- error = setRps - getRps
- integral = integral_prior+error
- derivative = error-error_prior
- if integral*ki > 10 then
- integral = 10/ki
- end
- if integral*ki < 0 then
- integral = 0/ki
- end
- value_out = kp*error+ki*integral+kd*derivative+bias
- error_prior = error
- integral_prior = integral
- if value_out < 0 then value_out = 0 end
- peripheral.wrap(SIDE).fluidTank().setNominalFlowRate(value_out)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement