soulik

Stepper motor example for Arduino

Nov 23rd, 2016
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. const int in1 =  2;
  2. const int in2 =  4;
  3. const int in3 = 6;
  4. const int in4 = 8;
  5.  
  6. const char stepperConfig[] = {
  7.   1,0,0,0,
  8.   1,1,0,0,
  9.   0,1,0,0,
  10.   0,1,1,0,
  11.   0,0,1,0,
  12.   0,0,1,1,
  13.   0,0,0,1,
  14.   1,0,0,1  
  15. };
  16.  
  17. int stepDelay = 1000;
  18. int angle = 360;
  19.  
  20. void setup() {
  21.   pinMode(in1, OUTPUT);
  22.   pinMode(in2, OUTPUT);
  23.   pinMode(in3, OUTPUT);
  24.   pinMode(in4, OUTPUT);
  25. }
  26.  
  27. void loop() {
  28.   int angleSteps = angle*64/45;
  29.  
  30.   for(int i=0;i<angleSteps;i++){
  31.     rotateCW();
  32.   }
  33.  
  34.   delay(500);
  35.  
  36.   for(int i=0;i<angleSteps;i++){
  37.     rotateCCW();
  38.   }
  39.   delay(500);
  40.  
  41. }
  42.  
  43. void doMotorStep(unsigned char stepNumber){
  44.   unsigned char stepIndex = (stepNumber % 8) * 4;
  45.  
  46.   digitalWrite(in1, (stepperConfig[stepIndex]) ? HIGH : LOW);
  47.   digitalWrite(in2, (stepperConfig[stepIndex+1]) ? HIGH : LOW);
  48.   digitalWrite(in3, (stepperConfig[stepIndex+2]) ? HIGH : LOW);
  49.   digitalWrite(in4, (stepperConfig[stepIndex+3]) ? HIGH : LOW);
  50.   delayMicroseconds(stepDelay);  
  51. }
  52.  
  53. void rotateCW() {
  54.   for (char i=0; i<8; i++){
  55.     doMotorStep(i);
  56.   }
  57. }
  58. void rotateCCW() {
  59.   for (char i=7; i>=0; i--){
  60.     doMotorStep(i);
  61.   }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment