Atm_AccelStepper.ino 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #include <Automaton.h>
  2. #include "Atm_AccelStepper.h"
  3. Atm_AccelStepper stepper ;
  4. int STEPPER_STEPPIN = 25 ;
  5. int STEPPER_DIRPIN = 26 ;
  6. int STEPPER_MAXSPEED = 1000000 ;
  7. int STEPPER_ACCELERATION = 100000;
  8. Atm_timer timer;
  9. char cmd_buffer[80];
  10. Atm_command cmd;
  11. enum { CMD_M, CMD_M2, CMD_R, CMD_S, CMD_P };
  12. const char cmdlist[] =
  13. "m m2 r s p";
  14. void cmd_callback( int idx, int v, int up ) {
  15. int pin = atoi( cmd.arg( 1 ) );
  16. switch ( v ) {
  17. case CMD_M:
  18. Serial.print("move : ");
  19. Serial.println(pin);
  20. stepper.move(pin);
  21. return;
  22. case CMD_M2:
  23. Serial.print("moveTo : ");
  24. Serial.println(pin);
  25. stepper.moveTo(pin);
  26. return;
  27. case CMD_R:
  28. Serial.print("rotate : ");
  29. Serial.println(pin);
  30. stepper.rotate(pin);
  31. return;
  32. case CMD_S:
  33. Serial.println("stop");
  34. stepper.stop();
  35. return;
  36. case CMD_P:
  37. Serial.print("position : ");
  38. Serial.println(stepper.getPosition());
  39. return;
  40. }
  41. }
  42. void timer_callback( int idx, int v, int up ) {
  43. //Serial.println("timer");
  44. Serial.print("position : ");
  45. Serial.println(stepper.getPosition());
  46. stepper.rotate(50);
  47. }
  48. void setup() {
  49. Serial.begin( 9600 );
  50. cmd.begin( Serial, cmd_buffer, sizeof( cmd_buffer ) )
  51. .list( cmdlist )
  52. .onCommand( cmd_callback );
  53. // AccelStepper.trace( Serial );
  54. stepper.begin(STEPPER_STEPPIN, STEPPER_DIRPIN)
  55. .pinReversed(0, 0, 0)
  56. .setMaxSpeed(STEPPER_MAXSPEED)
  57. .setAcceleration(STEPPER_ACCELERATION)
  58. .enable();
  59. stepper.trace(Serial);
  60. stepper.limitLow_set(1, 15, 0).limitLow_isHard(1)//.limitLow_setThresholds(1200, 2300)
  61. .limitHigh_set(1, 2, 0).limitHigh_isHard(1)
  62. // .onOnlimitlow([](int idx, int v, int up){ stepper.setPosition(0);stepper.move(1000);})
  63. .onOnlimitlow([](int idx, int v, int up){ Serial.println('limit low');})
  64. // // .onOnlimithigh([](int idx, int v, int up){stepper.setPosition(DAY_STEPS*MICROSTEPPING);})
  65. .onOnlimithigh([](int idx, int v, int up){Serial.println('limit high');})
  66. ;
  67. timer.begin(2000).repeat(-1).onTimer(timer_callback).start();
  68. }
  69. void loop() {
  70. automaton.run();
  71. //Serial.println(stepper.limitLow_State);
  72. }