macca-nz

AccelStepper with 28BYJ-48 follow POT example

Sep 24th, 2026
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 1.95 KB | Source Code | 0 0
  1. //For a 28BYJ-48 stepper with ULN2003 driver combo
  2. //Stepper follows POT position
  3.  
  4. #include <AccelStepper.h>
  5. #define STEPS 2038 // the number of steps in one revolution of your motor (28BYJ-48)
  6. #define LED LED_BUILTIN
  7. #define LED1 2
  8. #define POT A0
  9. bool led1State = 0, update = 0;
  10. int steps = 0, lastPos, count = 0;  
  11. long prevTime = 0;
  12. AccelStepper stepper(AccelStepper::FULL4WIRE, 8, 10, 9, 11);
  13.  
  14. void setup() {
  15.   analogReference(EXTERNAL);
  16.   Serial.begin(9600);
  17.   pinMode(LED, OUTPUT);
  18.   digitalWrite(LED, HIGH);
  19.   pinMode(LED1, OUTPUT);
  20.   digitalWrite(LED1, led1State);
  21.   //stepper.setMaxSpeed(1000);
  22.   int val = analogRead(POT);
  23.   val = getVal(val);
  24.   lastPos = map(val, 0, 1023, 0, 2038);
  25.   digitalWrite(LED, LOW);
  26. }
  27.  
  28. int getVal(int x){
  29.     if(x <= 30){
  30.       x = 0;
  31.     }else if( x >= 1020){
  32.       x = 1023;
  33.     }
  34.     return x;
  35. }
  36.  
  37. void loop() {
  38.  
  39.     if(millis() - prevTime >= 250){
  40.       count++;
  41.       if(count >= 20){
  42.         int val = analogRead(POT);
  43.         val = getVal(val);
  44.         Serial.println((String)"POT Val: " + val);
  45.         int currentPos = map(val, 0, 1023, 0, 2038);
  46.         steps = currentPos - lastPos;
  47.             if(currentPos != lastPos){
  48.                 stepper.enableOutputs();
  49.                 stepper.moveTo(currentPos);
  50.                 stepper.setMaxSpeed(150);
  51.                 stepper.setAcceleration(50);
  52.                 digitalWrite(LED, HIGH);
  53.                 Serial.println((String)"Steps to new position: " + steps);
  54.                 Serial.println((String)"Moving to new position!!" + currentPos);
  55.             }
  56.             count = 0;
  57.             lastPos = currentPos;
  58.             Serial.println((String)"Last Position: " + lastPos + "\n\n");
  59.       }  
  60.       digitalWrite(LED1, (led1State = !led1State));
  61.       prevTime = millis();
  62.     }
  63.     if (stepper.distanceToGo() == 0){
  64.         stepper.disableOutputs();
  65.         digitalWrite(LED, LOW);
  66.     }
  67.     stepper.run();
  68. }
  69.  
  70.        
  71.  
Advertisement
Add Comment
Please, Sign In to add comment