stepper_driver_test.ino 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include <Servo.h>
  2. Servo servo1;
  3. Servo servo2;
  4. // Pin definitions
  5. #define DATA_PIN 4 // DS
  6. #define CLOCK_PIN 16 // SH_CP
  7. #define LATCH_PIN 17 // ST_CP
  8. void setup() {
  9. // Initialize pins
  10. pinMode(DATA_PIN, OUTPUT);
  11. pinMode(CLOCK_PIN, OUTPUT);
  12. pinMode(LATCH_PIN, OUTPUT);
  13. //Initialize servos
  14. servo1.attach(14);
  15. servo2.attach(27);
  16. }
  17. void writeStep(byte stepByte) {
  18. shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, stepByte);
  19. digitalWrite(LATCH_PIN, HIGH);
  20. digitalWrite(LATCH_PIN, LOW);
  21. delayMicroseconds(840); //780 min
  22. }
  23. void forward(int rev) {
  24. for (int i = 0; i < rev; i++) {
  25. writeStep(0b00010001);
  26. writeStep(0b00110011);
  27. writeStep(0b00100010);
  28. writeStep(0b01100110);
  29. writeStep(0b01000100);
  30. writeStep(0b11001100);
  31. writeStep(0b10001000);
  32. writeStep(0b10011001);
  33. }
  34. }
  35. void backward(int rev) {
  36. for (int i = 0; i < rev; i++) {
  37. writeStep(0b10011001);
  38. writeStep(0b10001000);
  39. writeStep(0b11001100);
  40. writeStep(0b01000100);
  41. writeStep(0b01100110);
  42. writeStep(0b00100010);
  43. writeStep(0b00110011);
  44. writeStep(0b00010001);
  45. }
  46. }
  47. void rotateAntiClockwise(int rev) {
  48. for (int i = 0; i < rev; i++) {
  49. writeStep(0b00011001);
  50. writeStep(0b00111000);
  51. writeStep(0b00101100);
  52. writeStep(0b01100100);
  53. writeStep(0b01000110);
  54. writeStep(0b11000010);
  55. writeStep(0b10000011);
  56. writeStep(0b10010001);
  57. }
  58. }
  59. void rotateClockwise(int rev) {
  60. for (int i = 0; i < rev; i++) {
  61. writeStep(0b10010001);
  62. writeStep(0b10000011);
  63. writeStep(0b11000010);
  64. writeStep(0b01000110);
  65. writeStep(0b01100100);
  66. writeStep(0b00101100);
  67. writeStep(0b00111000);
  68. writeStep(0b00011001);
  69. }
  70. }
  71. void loop() {
  72. //Stepper test
  73. forward(50);
  74. delay(3000);
  75. backward(50);
  76. delay(3000);
  77. //Servo test
  78. servo1.write(90);
  79. delay(1000);
  80. servo2.write(180);
  81. delay(1000);
  82. servo1.write(0);
  83. servo2.write(0);
  84. delay(3000);
  85. //rotateClockwise(100);
  86. //delay(3000);
  87. //rotateAntiClockwise(100);
  88. //delay(3000);
  89. }