No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

steppers.cpp 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include <Arduino.h>
  2. #include <AccelStepper.h>
  3. #include "config.h"
  4. #include "config_pins.h"
  5. #include "steppers.h"
  6. static AccelStepper stepper_x(AccelStepper::DRIVER, X_STEP_PIN, X_DIR_PIN, 0, 0, false);
  7. static AccelStepper stepper_y(AccelStepper::DRIVER, Y_STEP_PIN, Y_DIR_PIN, 0, 0, false);
  8. static AccelStepper stepper_z(AccelStepper::DRIVER, Z_STEP_PIN, Z_DIR_PIN, 0, 0, false);
  9. static AccelStepper stepper_e(AccelStepper::DRIVER, E0_STEP_PIN, E0_DIR_PIN, 0, 0, false);
  10. enum stepper_states {
  11. step_disabled,
  12. step_not_homed,
  13. step_homing_x_fast,
  14. step_homing_x_back,
  15. step_homing_x_slow,
  16. step_homing_y_fast,
  17. step_homing_y_back,
  18. step_homing_y_slow,
  19. step_homing_z_fast,
  20. step_homing_z_back,
  21. step_homing_z_slow,
  22. step_homing_e_fast,
  23. step_homing_e_back,
  24. step_homing_e_slow,
  25. step_homed
  26. };
  27. static stepper_states state = step_disabled;
  28. void steppers_init(void) {
  29. stepper_x.setEnablePin(X_ENABLE_PIN);
  30. stepper_x.setMaxSpeed(XY_MAX_SPEED * XY_STEPS_PER_MM);
  31. stepper_x.setAcceleration(XY_MAX_ACCEL * XY_STEPS_PER_MM);
  32. stepper_y.setEnablePin(Y_ENABLE_PIN);
  33. stepper_y.setMaxSpeed(XY_MAX_SPEED * XY_STEPS_PER_MM);
  34. stepper_y.setAcceleration(XY_MAX_ACCEL * XY_STEPS_PER_MM);
  35. stepper_z.setEnablePin(Z_ENABLE_PIN);
  36. stepper_z.setMaxSpeed(Z_MAX_SPEED * Z_STEPS_PER_MM);
  37. stepper_z.setAcceleration(Z_MAX_ACCEL * Z_STEPS_PER_MM);
  38. stepper_e.setEnablePin(E0_ENABLE_PIN);
  39. stepper_e.setMaxSpeed(E_MAX_SPEED * E_STEPS_PER_MM);
  40. stepper_e.setAcceleration(E_MAX_ACCEL * E_STEPS_PER_MM);
  41. }
  42. bool steppers_run(void) {
  43. if (state == step_homing_x_fast) {
  44. } else if (state == step_homing_x_back) {
  45. } else if (state == step_homing_x_slow) {
  46. } else if (state == step_homing_y_fast) {
  47. } else if (state == step_homing_y_back) {
  48. } else if (state == step_homing_y_slow) {
  49. } else if (state == step_homing_z_fast) {
  50. } else if (state == step_homing_z_back) {
  51. } else if (state == step_homing_z_slow) {
  52. } else if (state == step_homing_e_fast) {
  53. } else if (state == step_homing_e_back) {
  54. } else if (state == step_homing_e_slow) {
  55. }
  56. boolean x = stepper_x.run();
  57. boolean y = stepper_y.run();
  58. boolean z = stepper_z.run();
  59. boolean e = stepper_e.run();
  60. return x || y || z || e;
  61. }
  62. bool steppers_homed(void) {
  63. return (state == step_homed);
  64. }
  65. void steppers_start_homing(void) {
  66. state = step_homing_x_fast;
  67. }
  68. static int steppers_move_axis(AccelStepper &axis, long pos) {
  69. if (state == step_disabled) {
  70. Serial.println(F("Enabling stepper drivers"));
  71. stepper_x.enableOutputs();
  72. stepper_y.enableOutputs();
  73. stepper_z.enableOutputs();
  74. stepper_e.enableOutputs();
  75. state = step_not_homed;
  76. }
  77. axis.moveTo(pos);
  78. }
  79. int steppers_move_x(long pos) {
  80. Serial.print(F("Moving X to "));
  81. Serial.print(pos);
  82. Serial.print(F(" mm ("));
  83. Serial.print(pos * XY_STEPS_PER_MM);
  84. Serial.println(F(" steps)"));
  85. return steppers_move_axis(stepper_x, pos * XY_STEPS_PER_MM);
  86. }
  87. int steppers_move_y(long pos) {
  88. Serial.print(F("Moving Y to "));
  89. Serial.print(pos);
  90. Serial.print(F(" mm ("));
  91. Serial.print(pos * XY_STEPS_PER_MM);
  92. Serial.println(F(" steps)"));
  93. return steppers_move_axis(stepper_y, pos * XY_STEPS_PER_MM);
  94. }
  95. int steppers_move_z(long pos) {
  96. Serial.print(F("Moving Z to "));
  97. Serial.print(pos);
  98. Serial.print(F(" mm ("));
  99. Serial.print(pos * Z_STEPS_PER_MM);
  100. Serial.println(F(" steps)"));
  101. return steppers_move_axis(stepper_z, pos * Z_STEPS_PER_MM);
  102. }
  103. int steppers_move_e(long pos) {
  104. Serial.print(F("Moving E to "));
  105. Serial.print(pos);
  106. Serial.print(F(" mm ("));
  107. Serial.print(pos * E_STEPS_PER_MM);
  108. Serial.println(F(" steps)"));
  109. return steppers_move_axis(stepper_e, pos * E_STEPS_PER_MM);
  110. }