Advertisement
LazerAio

CCturbineReactor

Apr 8th, 2022 (edited)
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. --Creddit ian for bulk of code
  2. error_prior = 0
  3. local integral_prior = 0
  4. local kp = 2
  5. local ki = 0.01
  6. local kd = 4
  7. local bias = 0
  8. SIDE = "back"
  9. while true do
  10. sleep(0)
  11. setRps = 900
  12. getRps = peripheral.wrap(SIDE).rotor().RPM()
  13.  
  14. if peripheral.wrap(SIDE).battery().stored() < 100000 and setRps - getRps < 200 then
  15. peripheral.wrap(SIDE).setCoilEngaged(true)
  16. else
  17. peripheral.wrap(SIDE).setCoilEngaged(false)
  18. end
  19.  
  20.  
  21.  
  22. error = setRps - getRps
  23. integral = integral_prior+error
  24. derivative = error-error_prior
  25.  
  26. if integral*ki > 10 then
  27.  
  28.  
  29. integral = 10/ki
  30.  
  31. end
  32.  
  33.  
  34. if integral*ki < 0 then
  35.  
  36.  
  37. integral = 0/ki
  38.  
  39. end
  40.  
  41.  
  42.  
  43. value_out = kp*error+ki*integral+kd*derivative+bias
  44.  
  45. error_prior = error
  46.  
  47. integral_prior = integral
  48.  
  49. if value_out < 0 then value_out = 0 end
  50.  
  51. peripheral.wrap(SIDE).fluidTank().setNominalFlowRate(value_out)
  52. end
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement